页面协议
页面协议(PageSchema)是编辑器、存储服务和运行时之间唯一需要持久化的 JSON 契约。新页面可用 EmptyPage 初始化;保存时使用 engine.pageModel.export()。
顶层字段
| 字段 | 必填 | 作用 |
|---|---|---|
version | 是 | 协议版本,例如 1.0.0 |
name | 是 | 页面名称 |
componentsTree | 是 | 根节点及完整组件树 |
componentsMeta | 是 | 已使用组件的库元信息 |
css | 否 | 页面级 CSS 规则 |
props | 否 | 运行时页面输入参数 |
methods | 否 | 页面级方法定义 |
lifecycle | 否 | 挂载与卸载生命周期 |
thirdLibs | 否 | 第三方库描述 |
assets | 否 | 页面依赖资源包 |
extra | 否 | 业务扩展字段 |
最小 Schema
import { EmptyPage } from '@chamn/model';
const schema = { ...EmptyPage, name: 'LandingPage',};根节点由 EmptyPage 或 Engine 创建,避免手写内部根组件名与当前版本不一致。
节点结构
componentsTree 是根节点,其 children 保存普通节点。常用字段:
| 字段 | 作用 |
|---|---|
id | 节点唯一标识,由模型创建和维护 |
componentName | 指向物料和运行时 React 组件 |
props | 组件 props、表达式或动态值 |
children | 子节点或插槽内容 |
css / classNames | 节点样式与 class 配置 |
state / nodeName | 节点局部状态及可引用名称 |
events / methods | 交互和方法能力,按物料定义 |
存储规则
- 存储完整 JSON,不保存 Engine/Render 实例。
- 保留未知
extra字段,方便业务扩展和版本演进。 - 服务端返回后先 JSON 解析,再传给
Engine schema、engine.updatePage()或Render page。 - 组件升级或重命名要建立 Schema 迁移;不要在浏览器中静默改写历史数据。
关联文档:物料协议、Render 使用指南。