基本概念
本篇用于帮助你快速理解 Univer Sheets 的基础术语与集成方式。先了解插件、快照、命令与 Facade API 等核心概念,再认识预设模式与插件模式的区别。
基本概念
在进一步深入了解 Univer 之前,请阅读本篇文档以了解 Univer 的基本概念,将有助于你更顺利地使用 Univer。
基本概念包括:
- 插件 Plugin
- 快照 Snapshot
- 命令 Command
- Facade API
插件
Univer 的功能均由插件提供,插件是 Univer 的基本组成单元,多个插件组合在一起构成了 Univer 应用。
插件的职责包括:
- 实现功能,例如
@univerjs/sheets-filter提供筛选功能 - 提供某种基础能力,例如
@univerjs/engine-render提供渲染能力
你可以按照自己的需要组合 Univer 提供的插件,定制符合你的需求的 Univer 应用,避免加载多余代码。你也可以通过编写插件来扩展 Univer 的功能,满足个性化的需求。
相关链接
- 编写一个 CSV 导入插件 了解如何编写一个插件
- Univer 架构 详细了解 Univer 的架构设计
快照
你需要在 Univer 中加载快照来加载文档,每种类型的文档都提供了自己的快照格式,请参考以上 API 文档了解如何编写符合格式要求的快照:
- 电子表格的快照格式是
IWorkbookData - 文档的快照格式是
IDocumentData
功能插件可以通过 resources 字段来存储资源,例如图片等等,可参考 插件自定义模型。
注意事项
注意!Univer 的快照仅用于存储数据,在运行时,它并不会反映最新的文档状态!如果你想把文档状态保存为快照,请使用 Facade API 上的保存快照的方法。
命令
在 Univer 中,对于数据的修改都需要通过命令执行,基于命令的方式可以更好地追踪值的变化,并且能够实现撤销、重做和协同编辑等功能,以及处理功能之间复杂的关联逻辑等等。
如果你想通过命令的方式修改文档数据,请参考 如何查找命令 ID。如果你选择通过 Facade API 来修改文档数据,实际上 Facade API 在背后会为你准备参数并执行命令。
注意事项
请不要直接修改 snapshot! 这不会生效,不会触发视图或者 UI 的更新,请通过命令或者 Facade API 来修改数据。
Facade API
由于办公应用的复杂度非常高,Univer 的架构相应地也非常复杂,为了让开发者更容易地使用 Univer,我们提供了 Facade API,它是对 Univer 第一方插件的封装,提供了更简单的接口,让开发者可以更容易地使用 Univer。
目前 Facade API 在不断完善中,如果你有任何建议或者需求,欢迎在 GitHub 上提 issue。
当然,简单性是有代价的,如果你需要更高级的自定义能力,就需要在了解 Univer 架构的基础上使用更加底层的命令和模块所暴露的 API。
相关链接
预设模式与插件模式
Univer 采用了插件化的设计理念,旨在为开发者提供一个灵活、可扩展的电子表格应用框架。通过插件化设计,Univer 可以轻松地集成各种功能模块,从而满足不同用户的需求。但插件化的设计会增加应用的复杂性,尤其是对于首次接触 Univer 的开发者来说。
为此,Univer 提供了插件模式和预设模式两种方式帮助你快速集成和使用 Univer。所谓预设实际上就是一组预先配置好的插件组合,因此在无需进行复杂扩展的情况下,两者所提供的能力是相同的。
注意事项
- 依赖版本需一致:无论是使用预设模式还是插件模式的方式,你都必须保证所有依赖的版本号一致。
- 谨慎混用插件和预设:如果一个插件已经被包含在某个预设中,那么在使用预设时就不需要再单独引入该插件了。否则可能会导致插件冲突或功能异常。
预设模式与插件模式的区别:
| 插件模式 | 预设模式 |
|---|---|
| 需要手动引入对应的 facade 包 | 无需手动引入任何 facade 包 |
| 需要注意同类型功能插件注册顺序 | 同功能被包含在预设中无需关注注册顺序 |
| 支持按需懒加载 | 仅支持预设级别的懒加载,预设内的插件包只能同步加载 |
你觉得这篇文档如何?
