组件开发工程负责保存可修改源码,dist/ 负责提供平台实际加载的文件。开发时应保证源码元数据与本次构建产物一致;具体契约以当前 Agent 开发辅助工具包和目标项目模板为准。
my-component/
├── package.json
├── vite.config.ts
├── tsconfig.json
├── public/
│ ├── data.json
│ └── icon.svg
└── src/
├── types.ts
├── edit.tsx
├── use.tsx
├── option.tsx
├── optionSchema.ts
└── components/ # 按需放组件内部实现和自定义属性控件
目标项目已有模板时,以模板为准;不要只为匹配上面的示意图移动现有文件。
|
文件 |
职责 |
|---|---|
|
|
声明组件名、版本、展示名、默认配置、默认样式、事件和拖拽约束 |
|
|
定义 |
|
|
编辑态入口,保证组件在设计画布中可识别、可选中和可预览 |
|
|
使用态入口,处理真实数据、交互、隐藏状态和异常兜底 |
|
|
属性面板入口,通常渲染 |
|
|
声明属性面板的视图节点和联动逻辑 |
|
|
组件列表中的图标 |
当前辅助工具包中的 ux-material-contract 要求提供 Edit、Use、Option 三个默认导出,并分别构建为 edit.js、use.js、option.js。目标项目使用不同版本模板时,以该模板的契约为准。
下面按当前辅助工具包中的 ux-material-contract 给出一个可解析示例;它不是可直接复制到所有组件的完整模板,实际字段和取值还应从目标工程的同类组件确认:
{
"name": "@example/summary-card",
"label": {
"zh-cn": "摘要卡片",
"en": "Summary Card"
},
"version": "1.0.0",
"description": {
"zh-cn": "展示一项摘要数据",
"en": "Displays one summary value"
},
"icon": "./icon.svg",
"webType": "dataEntry",
"config": {
"title": {
"zh-cn": "标题",
"en": "Title"
},
"hidden": false
},
"configCss": {
"style": {
"width": "100%"
}
},
"events": [
{
"id": "onClick",
"name": "点击"
}
]
}
注意:
文件必须是严格 JSON,不能写注释、函数、单引号或尾随逗号。
config 与 configCss 是新拖入实例的默认值;修改默认值不会自动覆盖页面上已有实例。
当前辅助工具包契约支持示例中的 webType: "dataEntry";旧培训材料还列出 form、table、area、layout。具体组件使用哪个值,以目标项目当前模板为准。
业务配置通常绑定到 :config.* 或 :configCss.*;需要初始值时,再在 data.json 的 config 或 configCss 中配置,并与组件实际读取路径保持一致。
events[].id 必须与 Use 接收并触发的事件回调名一致。
组件名、版本与 package.json、dist/data.json 是否需要逐项对应,由当前构建模板校验;不要沿用旧项目规则代替当前模板。
编辑态用于设计画布预览。它应正确透传样式和测试标识,能处理残缺配置,并避免在设计时执行不可逆的业务操作。
任意组件在打开页面或保存页面前需要校验配置时,都可以按当前模板的类型契约在 Edit 上挂载 checkOption。培训材料以输入组件为例,但该能力不限于输入组件;校验不通过时返回相应错误提示。
使用态负责真实渲染和交互。下面是常见实现检查,不代表所有组件都必须拥有这些配置:
组件使用 config.hidden 时,按目标工程约定处理隐藏状态。
涉及异步数据时,按业务需要处理未就绪、空数据和查询失败状态。
事件先在 data.json 声明,再通过 Use 收到的同名回调触发。
有多实例场景时,检查实例之间的值、加载状态和请求是否隔离。
属性面板通常把 id、scope 和 optionSchema 交给 DynamicOptionPanel。面板结构、配置绑定和联动规则见属性面板与联动。
平台会读取 data.json 并按当前模板约定加载相应入口。当前辅助工具包要求三入口默认导出,并构建为 SystemJS;遇到组件不出现或白屏时,优先检查:
data.json 的名称或版本与加载路径不一致。
对应 JS 文件缺失,或没有默认导出。
构建格式不是当前工具包要求的 SystemJS。
JS 引用了目标运行时没有提供的外部模块。
构建和打包检查见开发包、调试包与上传包。精确类型和导入入口以 Agent 开发辅助工具包及目标项目当前版本为准。
事件:在 data.json.events 声明,在 Use 中调用同名回调;属性面板可用 EventAction 为事件配置动作。
方法:需要让页面动作调用组件能力时,在元数据中声明方法,并在运行态注册对应实现。参数能力以目标版本契约为准。
元素依赖:组件配置引用其它页面元素时,应实现目标工程规定的依赖提取能力,使被引用元素更新后可以同步。
保存校验:组件存在保存前置条件时,可通过 Edit.checkOption 返回错误;校验范围不限于输入组件,签名和返回结构以当前模板类型为准。
回到顶部
咨询热线
