AUP 是 ARC 的声明式 UI 模型。应用先描述一个有语义的界面 tree、数据和交互;交互式 AUP 通常由 ARC session 和目标 renderer 呈现,Web Device 也可把受支持的 AUP tree 直接渲染为静态 HTML。
把三层分开理解:
| 层 | 负责什么 | 不负责什么 |
|---|---|---|
| AUP | 语义 node/event/state/data 合同与共享 degradation 规则 | 某一种设备的具体 HTML 或原生控件实现 |
| AUP DSL | 可读、可维护的 source-first 编写形式和生成工具 | 另一套独立的 UI 模型 |
| 设备与 renderer | 在握手中报告实际 DeviceCaps,并据此实现呈现与目标端降级 | 改写 AUP 的业务意图 |
对于 AUP app 配置,当前 loader 优先读取 .aup/app.aup。只有该来源不存在时,才读取 .aup/app.json 作为 JSON source;如果 DSL source 存在但无效,loader 会失败而不会悄悄回退。JSON-first app 仍受支持;DSL-first app 则可以虚拟暴露或按需物化兼容 JSON。这些都是同一 AUP 模型的不同输入/产物角色,而不是两套产品。
从任务开始
| 想做什么 | 从哪里开始 |
|---|---|
| 建立并跑通第一个完整 AUP app | 起步 |
| 理解 tree、event、session 与 capability | 核心概念 |
| 用 DSL 编写与维护 source | 用 DSL 编写 |
| 理解 ARC 在设备表面怎样运行它 | 在 ARC 中运行 |
| 看 source 示例及其证据边界 | 示例与证据 |
| 查精确、带版本的契约 | 参考 |
与 Web Device 的关系
Web Device 是 AUP 的一个 Web-facing 目标:它能把受支持的 AUP tree 静态渲染成 HTML,也让网站页面用 AUP 组合 Web 组件。它不是交互式 AUP session 的替代品;站点仍有自己的 .web/ 组件、页面、主题、内容和路由约定。组件是在网页中提供更丰富 HTML、CSS 和交互表面的一个层,而不是 AUP tree 的唯一合法形式。
网站目录、内容对象和主题属于 Web Device 层,有意不放在这个 AUP board 中;涉及 AUP 的语义、DSL、会话或降级时,留在本 board。
证据与版本
本 board 不把陈旧的 Showcase 数字或未注册的 Showcase 页面文件当作“当前已部署 demo”的证据。实现语义以当前源码与测试为依据;带命令的页面已按 arc 2.0.0-beta.25 实跑;已经填充的页面会标明源码、测试和运行时边界。考古记录和待人决定的发现保留在本 board 不渲染的台账中。