跳转到内容

Engine 架构

包职责

责任业务接入点
@chamn/modelSchema 类型、CPage、节点模型、物料类型保存与加载页面 JSON
@chamn/engine工作台、插件、属性面板、设计态画布<Engine />onReady、插件配置
@chamn/layoutiframe 布局、选中、拖拽、缩放、尺寸调整Engine 内部使用;高级画布定制可直接使用
@chamn/renderSchema 到 React 组件树的运行时渲染预览页、发布页
@chamn/material示例和基础物料实现参考物料组织方式

运行链路

flowchart LR
  A[业务 Schema] --> B[Model: CPage / CNode]
  B --> C[Engine]
  C --> D[插件: 大纲、物料库、右侧面板、历史、快捷键]
  C --> E[iframe 设计态 Render]
  C --> F[pageModel.export]
  F --> G[后端存储]
  G --> H[Render 运行态]
  H --> I[业务 React 组件]

Engine 负责编辑器交互;真正决定页面视觉的是 Schema、同名 React 组件和组件 CSS。编辑器画布与独立预览页需要兼容的组件实现。

默认插件

plugins.DEFAULT_PLUGIN_LIST 包含:设计器、运行时日志、大纲树、组件库、全局状态面板、右侧面板、历史记录和快捷键。

最小自定义插件列表仍应包含 DesignerPlugin;缺少它会失去可编辑画布。想保留撤销和键盘操作时,同时保留 HistoryPluginHotkeysPlugin

设计态与运行态

  • 设计态:Engine 将 Render 放进 iframe,并添加选择、拖拽、尺寸调整和属性面板。
  • 运行态:Render 直接输出组件树,不包含编辑器 UI;通过 pageProps$$context 或请求适配连接业务数据。
  • 共享边界:Schema 是唯一跨端契约。不要持久化 Engine 实例、插件状态或 DOM 引用。

扩展边界

  • 新业务组件:React 组件 + 物料 Meta + 编辑器可加载资源。
  • 新属性编辑器:注册 custom setter,再在物料 props 中使用。
  • 新工作台能力:新增插件或通过 Workbench API 替换面板视图。
  • 新发布能力:使用 Render 和业务自己的组件映射、鉴权、数据接口。