afs-list 是 AUP 跨设备 primitive,不是 Web Device 的 layout 组件,也不是 Web-only widget。它属于 AUP_PRIMITIVES 中的 18 个名称之一,并出现在每个 target 的 DeviceCaps.primitives map 中(取值为 native、webview、partial 或 unsupported)。
合同
| 字段 | 值 |
|---|---|
| Primitive 名称 | afs-list |
| 层级 | AUP 跨设备 primitive(AUP_PRIMITIVES) |
| 公共状态 | experimental |
| Document 能力 | native(renderer 存在;数据合同开放) |
| 共享 degradation chain | 无 |
| 作者入口 | AUP + source/fixture(layout、itemStyle、from / src)· 带静态子节点的容器指令 |
| Document renderer / 备注 | renderer/primitives/afs-list.ts(静态子节点;空+src → “Loading…”;空无 src → “No items”) |
| Showcase 证据 | list-basic.aup 及相关 list-* 页(from "data/items") |
何时使用
在交互 target 上对 AFS 路径或打包 fixture 做声明式列表时。
何时不要使用
不要在公开 docs 绑定任意 AFS 路径。在没有只读 fixture origin 时不要声称已验证的 live list sample。
Sample 合同
| 字段 | 值 |
|---|---|
| 目的 | document 上空态与静态子节点的诚实渲染 |
| 边界 | 无写入动作;无任意 AFS 路径;无 frame bridge;不是本站路径解析的证明 |
| 作者入口 | 容器指令 :::afs-list{…} |
| 表面 | Web Device document |
| 公共状态 | experimental |
| Fallback / 失败 | 无子节点且无 src → “No items”;无子节点且有 src → “Loading…”(静态) |
| 验证 | 下方路由 · 仅空态;路径支撑的 live 数据仍开放 |
Document sample(空 — No items)
源码:
:::afs-list{id="docs-prim-afs-list-empty" layout="list" itemStyle="row"}
:::渲染:
No items
Document sample(有 src 无子节点 — loading chrome)
展示静态 renderer 的 loading 空态。它不会在本站文档上抓取 AFS 路径。
源码:
:::afs-list{id="docs-prim-afs-list-loading" layout="list" itemStyle="row" src="data/items"}
:::渲染:
No items
Document sample(静态子节点)
预填子节点渲染为列表项。这不是 AFS list() 解析的证据。
源码:
:::afs-list{id="docs-prim-afs-list-static" layout="list" itemStyle="row"}
Static row one — authored as document children, not fetched.
Static row two — still not an AFS path proof.
:::渲染:
Static row one — authored as document children, not fetched.
Static row two — still not an AFS path proof.
Showcase list-basic 将 afs-list 绑定到打包的 data/items 且列表本身无写入动作——对未来带专用只读 fixture origin 的嵌入 sample 有用。见 Live 示例:范围与合同(「列表还缺什么」)。
失败与限制
| 情形 | 预期结果 |
|---|---|
空列表,无 src | “No items” 空态 chrome |
空列表带 src | “Loading…” 静态 chrome(此处无 fetch 证明) |
| 公开 docs 上任意 AFS 路径 | 超出合同 |
| 期望写入 / drop / mutate | 超出合同 |
验证证据
| 项 | 值 |
|---|---|
| 基线 | 2026-08-09 · arc --version → 2.0.0-beta.28 |
| 能力行 | docs/aup/capability-matrix.md(内部,不对外路由)· afs-list |
| 实现 | renderer/primitives/afs-list.ts;caps device-caps.ts |
| 公开路由 | /en/docs/aup/primitives/afs-list/ · /zh/docs/aup/primitives/afs-list/ |
| 本地运行 | arc service start --blocklet blocklets/arcblock --port 4900 · 确认 empty / loading / 静态子节点 chrome |
| 接受标准 | 空态匹配;页面声明数据合同开放;无任意路径声明 |
证据锚点
| 项 | 值 |
|---|---|
| 注册表 | packages/aup/src/aup-types.ts · AUP_PRIMITIVES |
| Document caps | providers/runtime/web-device/src/device-caps.ts · DEVICE_CAPS_DOCUMENT |
| Degradation | packages/aup/src/degradation.ts · DEGRADATION_CHAINS |
| 内部矩阵 | docs/aup/capability-matrix.md(内部,不对外路由) |
| Taxonomy hub | Primitive 类型分类与证据 |
| Sample 合同规则 | Live 示例:范围与合同 |