Blocklet 可以暴露 Web surface。Surface 仍有自己的契约。选对层再在 package 内组合。
AUP vs Web Device
| AUP | Web Device | |
|---|---|---|
| 回答的问题 | 语义 UI(页面、事件、primitive)是什么? | Web 站点/内容树如何渲染? |
| 典型路径 | .aup/app.aup、.aup/pages/、.aup/man/ | pages/**/layout.aup、.web/、SEO 原子、.route/web |
| 编写板 | AUP | Web Device |
| 首次练习 | 第一个 AUP 应用 | 构建第一个站点 |
它们可以共存在同一 package(如 minimal-app:公开 web 页 + AUP app + agent)。共存不等于两块文档相同。
Blocklet 如何拥有 surface
| Package 关注点 | 例子 |
|---|---|
| 身份 / DID | blocklet.yaml |
谁处理 / | .route/web vs .route/app vs AUP 默认 |
| 域名与 pretty URL 绑定 | blocklet.yaml 的 sites |
| 页面背后的 instance 数据 | AFS 路径 + bindings(见 数据与 AFS) |
没有 Web 路由声明时,直接 Blocklet URL 可能寻找 AUP 入口,而不是静态 Web Device 入口。Web Device 首站指南写明了最小 .route/web + .web/site.yaml + pages/index/layout.aup 集合。
Recipe 与参考形态
| 起点 | Surface 侧重 |
|---|---|
arc blocklet create --recipe basic | 仅 manifest——自行添加 surface |
--recipe minimal-app | 一页 web、AUP app、agent、settings |
| Web Device 首站指南 | 在 basic package 中手建最小静态站 |
hello-html / hello-declarative(ARC 树) | 教学样例 |
did-space(ARC 树) | 双 surface:营销 web + /explorer AUP |
不要在此复制 primitive 目录
| 需要 | 去向 |
|---|---|
| AUP primitive / 事件 / DSL | AUP 板 |
| Web 组件、主题、markdown embed | Web Device 板 |
本页只记录组合点:路由、recipe、package 布局。primitive/组件/directive 变更时更新所属板,不要在 Blocklets 下分叉一份目录。
Surface 的本地验收
arc dsl validate .
arc blocklet check . --profile <matching-profile>
arc blocklet run .
# 打开打印的 URL——宽屏 + 窄屏成功的 package 构建不能替代打开渲染后的页面。见 检查、构建与 inspect 与 测试与诊断。