Univer 核心架构概述
Univer 用于在浏览器(及 Node 等环境)中构建可编辑的表格、文档、演示稿,强调插件化、命令驱动变更、Canvas 自绘、可协同。
1. 分层架构
text
Facade API 面向业务的上层封装
Plugin 功能以插件注册(逻辑 / UI 可拆分)
Core Services Command、Undo、Lifecycle、DI(redi)
Data Model Workbook / Document / Slide + Snapshot
Rendering Canvas、视口、分层绘制2. 核心组件
| 组件 | 职责 |
|---|---|
| Univer 实例 | 入口:DI 容器、注册插件、挂载文档单元 |
| Injector (redi) | 服务注册与解析,支持父子作用域 |
| Plugin | 生命周期钩子中注册 Service / Controller |
| CommandService | 统一执行 COMMAND / MUTATION / OPERATION |
| UnitModel | 各文档类型数据与快照 |
| Engine / Scene | 渲染树与绘制 |
3. 三类命令(心智模型)
| 类型 | 是否进 Undo | 是否协同同步 | 典型用途 |
|---|---|---|---|
| MUTATION | 是 | 是 | 改单元格、插行等最小数据变更 |
| COMMAND | 组合层 | 编排多个 MUTATION | 业务操作入口 |
| OPERATION | 否 | 一般否 | 滚动、选区等 UI 态 |
所有持久数据修改应走命令,不要直接改 Model。
4. 三种文档单元
| 类型 | 说明 |
|---|---|
| Workbook | 电子表格 |
| Document | 富文本文档 |
| Slide | 演示文稿 |
均支持 Snapshot 序列化,供保存与协同。
5. 设计原则(摘要)
- 插件扩展:核心薄,能力插件化。
- 逻辑 / UI 分离:如
sheets-filter与sheets-filter-ui。 - 命令单一入口:便于 Undo、协同、审计。
- 增量渲染:只重绘脏区。
6. 阅读路径
| 主题 | 章节 |
|---|---|
| 插件与生命周期 | 02 |
| 绘制与性能 | 03 |
| 公式 | 04 |
| 改数据 | 05 |
| 结构 | 06 |
| 多人 | 07 |
| Node / Worker | 08 |
总结
记牢:Univer = DI + 插件 + Command/Mutation + Snapshot Model + Canvas。