跳转到内容

页面协议

页面协议(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 schemaengine.updatePage()Render page
  • 组件升级或重命名要建立 Schema 迁移;不要在浏览器中静默改写历史数据。

关联文档:物料协议Render 使用指南