画板数据结构
IBoardData
IBoardData 是 Univer 画板使用的快照格式。它用于描述一个画板单元,包括页面顺序、页面数据、资源、主题、当前页面、缩放比例和画板级设置。
属性
| 属性 | 类型 | 说明 |
|---|---|---|
| id | string | 画板单元的唯一 ID。 |
| rev? | number | 可选的修订值,供持久化层或协作层使用。 |
| name | string | 画板名称。 |
| appVersion | string | 创建该快照的软件包版本。 |
| locale? | string | 画板的区域设置。 |
| defaultPageSize | IBoardPageSize | 画板页面的默认尺寸。 |
| pageOrder | string[] | 按顺序排列的画板页面 ID 列表。 |
| pages | Record\<string, IBoardPage\> | 以页面 ID 为键的页面快照。 |
| activePageId? | string | 当前页面的 ID。 |
| theme? | IBoardThemeData | 当前画板主题。 |
| themes? | Record\<string, IBoardThemeData\> | 其他具名主题。 |
| zoomRatio? | number | 当前缩放比例。 |
| resources? | IResources | 图片、富文本、表格及其他元素使用的外部资源。 |
| custom? | `Record<string, unknown> | null` |
| boardSettings? | IBoardSettings | 画板级 UI 和交互设置。 |
页面数据
IBoardPage 按 ID 存储元素,并使用 elementOrder 定义渲染顺序。自行构建快照时,请确保这两个数据结构保持同步。
TypeScript
const boardData = { id: 'board-1', name: 'Planning board', appVersion: '1.0.0', defaultPageSize: { width: 1920, height: 1080 }, pageOrder: ['page-1'], pages: { 'page-1': { id: 'page-1', pageType: 'page', name: 'Page 1', elementOrder: ['text-1'], elements: { 'text-1': { id: 'text-1', type: 'text', transform: { left: 120, top: 96, width: 240, height: 80 }, text: 'Kickoff', }, }, }, }, activePageId: 'page-1',}用途
IBoardData 主要用于:
- 创建
UniverInstanceType.UNIVER_BOARD单元。 - 持久化和恢复画板文档。
- 为导入、导出或服务端处理准备数据。
- 在渲染前为画板预置页面、元素和设置。
快照对象属于持久化数据。画板运行后,请优先使用 Facade API,不要直接修改快照对象。
你觉得这篇文档如何?