跳到主要内容
知识地图Web Device 的组件是什么?ArcBlock 体系

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← AFS 与界面

一个问题

Web Device 的组件是什么?

区分核心 primitive、Web-only 类型与主题组件,并查看默认主题目录。

  1. 内容记录提供字段
  2. 页面 layout传入属性与插槽
  3. 组件实现输出结构与样式
  4. 页面呈现
关系示意 · 箭头说明职责与连接,不代表完整协议时序。

Web Device 的主题组件,是可复用的 Web 呈现实现。例如,portal-header 负责导航,post-hero 负责文章头部,content-card 负责内容卡片。它们不是新增的 AUP 核心 primitive。

仍以文章页为例:布局选用 post-hero 来显示标题、作者和封面,选用 detail-content 来承载正文。同一个标题区组件能用于很多文章,变化的是传给它的数据。

有些组件会预留带名字的位置,叫 slot(插槽)。例如“正文位置”接收文章内容,“侧栏位置”接收相关文章。布局决定把哪一部分放进哪个位置;组件决定这些位置怎样显示。它不是另一个数据存储服务。

实现上,manifest.json 描述组件接受的属性,render.js 生成内容,style.css 提供样式;需要客户端交互时再有 script.js。这些文件把可复用组件的接口与行为落实下来。

站点可以在 .web/components/ 定义自己的组件或覆盖主题中的同名组件。本 Learning 的知识地图也是这种站点组件:它不会因为名字叫 map 就变成 AUP 的地理 map primitive。

用当前 Learning 页面走一遍

这张页面本身就把几个职责分开了:

  1. 内容记录保存问题、答案、正文和关联节点。修改解释文字,改的是内容。
  2. 页面 layout把标题交给 learning-map 的 header 模式,把正文放进 content 插槽,把关联内容交给同一组件的 detail 模式。它负责组合。
  3. 组件属性把内容接到呈现上。例如 title=$meta.name 表示把当前记录的名称传给组件的 title 属性;items=$source.nodes 把布局声明的数据源结果交给组件。这里的 $meta 和 $source 是 Web Device 页面中的取值方式,不是任意 JSON 都能执行的表达式。
  4. 组件实现决定标题怎样排版、关联节点怎样排列,以及知识地图如何响应拖动。调整这些呈现和交互,改的是站点组件。

这个例子是内容如何进入页面的连接。若要让一个按钮修改任务状态,还需要相应的动作、状态连接和授权;仅把组件显示出来,不会自动建立那条业务操作链。

默认主题里有哪些组件?

下面是核对源码版本中 默认主题目录的 27 项。这不是所有主题、所有站点或所有 Web widget 的总目录;站点可以继续扩展。

组件用途
access-gate正文里的预览或会员访问提示
book-reader把文档组织成翻阅式阅读视图
content-card文章、新闻或活动卡片
detail-content居中的详情正文与可选阅读导航
detail-sidebar正文与侧栏布局
event-card带日期和状态的活动列表
event-hero活动详情页的日期、地点与报名入口
globeWebGL 地球仪视觉
hero-banner首页标题、说明与行动入口
key-pad方向键提示控件
leaf-shadow树影光线视觉叠层
news-ticker滚动新闻标题
page-sections把多个 slot 包成带可选标题的分区
page-stack垂直堆叠 slot
platform-stack技术层次图
portal-footer站点页脚导航
portal-header站点主导航
post-hero文章标题、作者、日期与封面
product-frame承载真实截图或终端记录的展示外框
product-frame-gallery多个产品展示外框的自适应排列
product-hero产品页面首屏
product-showcase产品功能卡片
related-content关联内容区域
site-home品牌首页整体呈现
tag-list带链接的标签列表
tech-hero技术主题页首屏
technology-card技术介绍卡片

三种“组件”不要混在一起

  • 核心 primitive:协议层的类型,例如 text、action。
  • Web-only AUP 类型:只在 Web 运行时提供的额外节点类型,列在 AUP_WIDGETS,不能据此假定跨设备支持。
  • Web Device 主题组件:页面组合使用的实现,例如 portal-header;其接口由组件 manifest 定义。

同一个词有时会在不同目录出现。判断一个名称属于哪一层,要看它的清单、接口和运行位置,不能只凭名字。

继续阅读

技术文档:查阅完整说明。

检查一下理解

portal-header 是 AUP 核心 primitive 吗?

不是。它是 Web Device 的主题组件,由 manifest 和 Web 实现定义,供页面 layout 组合使用。

沿着学习路径继续