SDK 包边界
HyperCard 现在按三个 npm 包拆分。最重要的原则是:SDK 负责“拿数据渲染和编辑”,宿主负责“业务数据、权限、接口和产品工作台”。
总览
| 包 | 负责 | 不负责 |
|---|---|---|
@hy-bricks/core | 运行时、libs 注入、组件编译辅助、多画布 registry | 组件库查询、权限、业务数据请求 |
@hy-bricks/editor | 源码编辑、预览、受控 v-model、历史/Diff 入口事件 | fetch 历史版本、发布权限、后端 schema |
@hy-bricks/canvas | 页面渲染、画布设计器、LayoutBox、选择/拖拽/resize、命令栈 | 组件列表 UI、属性面板 UI、业务编排 UI |
core
core 是运行时底座。它的核心是 createHyperCard()。
宿主可以注入任意库:
ts
app.use(createHyperCard({
libs: {
echarts,
http,
formatMoney,
},
}))组件源码里只认 __HYPERCARD__ 这个运行时上下文。
editor
editor 是组件源码编辑器。它要保持薄:
- source 由宿主传入。
- 修改通过
v-model回传。 - “看改动”“历史版本”“发布”只 emit 事件。
- 真正保存、比较、回滚、鉴权都由宿主做。
这条边界很重要。否则编辑器会被某个业务后端 schema 绑死。
canvas
canvas 是页面渲染和设计核心。
它提供:
HyperCardPageRendererHyperCardCanvasDesignerCanvasHandleLayoutBoxcontainerLayout- 选择、拖拽、resize、命令栈、实例树、辅助线、网格、资源解析等能力
但它不内置:
- 组件库面板
- 属性面板
- 右键菜单 UI
- 页面库 UI
- AI 命令栏 UI
这些都由宿主项目自己组合。SDK 给 API 和规则。
宿主必须负责什么
- 用户能不能看见某份业务数据。
- 调哪个业务接口拿数据。
- 组件库怎么分组、搜索、上架。
- 页面版本怎么保存、审核、发布。
- 数据错误怎么提示。
- 业务主题、国际化、审计日志。
一句话
HyperCard SDK 是“画布引擎 + 组件运行时 + 源码编辑器”,不是完整业务后台。