# 基本概念

- Human documentation: [https://docs.univer.ai/zh-CN/guides/docs/getting-started/quickstart](https://docs.univer.ai/zh-CN/guides/docs/getting-started/quickstart)

- Agent Markdown: [https://docs.univer.ai/zh-CN/guides/docs/getting-started/quickstart.md](https://docs.univer.ai/zh-CN/guides/docs/getting-started/quickstart.md)

- Requested language: `zh-CN`

- Content language: `zh-CN`

- Documentation version: `1.0.0-rc.0`

- Source: [docs/getting-started/quickstart.zh-CN.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/getting-started/quickstart.zh-CN.mdx)

---

本篇用于帮助你快速理解 Univer Docs 的基础术语与集成方式。先了解插件、快照、命令与 Facade API 等核心概念，再认识预设模式与插件模式的区别。

## 基本概念

在进一步深入了解 Univer 之前，请阅读本篇文档以了解 Univer 的基本概念，将有助于你更顺利地使用 Univer。

基本概念包括：

* 插件 Plugin
* 快照 Snapshot
* 命令 Command
* Facade API

### 插件

Univer 的功能均由插件提供，插件是 Univer 的基本组成单元，多个插件组合在一起构成了 Univer 应用。

插件的职责包括：

1. 实现功能，例如 `@univerjs/docs-hyper-link` 提供 Univer Docs 的超链接模型和命令
2. 提供某种基础能力，例如 `@univerjs/engine-render` 提供渲染能力

你可以按照自己的需要组合 Univer 提供的插件，定制符合你的需求的 Univer 应用，避免加载多余代码。你也可以通过编写插件来扩展 Univer 的功能，满足个性化的需求。

#### 相关链接

1. [超链接](https://docs.univer.ai/zh-CN/guides/docs/features/hyper-link.md) 介绍如何通过预设模式或插件模式添加 Docs 功能
2. [Univer 架构](/blog/univer) 详细了解 Univer 的架构设计

### 快照

Univer Docs 使用 [`IDocumentData`](https://docs.univer.ai/zh-CN/guides/docs/model/document-data.md#idocumentdata) 作为快照格式，它描述文档正文、文档级样式、页眉页脚、绘图、列表、表格和插件资源。

可选的 `resources` 字段用于存储插件定义的数据。

> [!WARNING: 注意事项]
> 注意！Univer 的快照仅用于存储数据，在运行时，它并不会反映最新的文档状态！如果你想把文档状态保存为快照，请使用 Facade
> API 上的保存快照的方法。

### 命令

在 Univer Docs 中，文档内容和格式的修改都通过命令执行。这样可以追踪变更，实现撤销、重做和协同编辑，并协调相关功能。

Facade API 会在背后准备参数并执行对应的 Docs 命令。

> [!WARNING: 注意事项]
> **请不要直接修改 snapshot！** 这不会生效，不会触发视图或者 UI 的更新，请通过命令或者 Facade API 来修改数据。

### Facade API

由于办公应用的复杂度非常高，Univer 的架构相应地也非常复杂，为了让开发者更容易地使用 Univer，我们提供了 Facade API，它是对 Univer 第一方插件的封装，提供了更简单的接口，让开发者可以更容易地使用 Univer。

目前 Facade API 在不断完善中，如果你有任何建议或者需求，欢迎在 GitHub 上提 issue。

Facade API 是对底层细节的抽象，虽然它简化了常见任务，但实现复杂功能时可能需要你了解 Univer 的架构并直接使用底层 API。

#### 相关链接

1. [Facade API 介绍](https://docs.univer.ai/zh-CN/guides/docs/getting-started/facade.md)
2. [Facade API 常用方法](https://docs.univer.ai/zh-CN/guides/docs/features/core/general-api.md)
3. [Univer Docs API 常用方法](https://docs.univer.ai/zh-CN/guides/docs/features/core/docs-api.md)

## 预设模式与插件模式

Univer 采用了插件化的设计理念，旨在为开发者提供一个灵活、可扩展的电子文档应用框架。通过插件化设计，Univer 可以轻松地集成各种功能模块，从而满足不同用户的需求。但插件化的设计会增加应用的复杂性，尤其是对于首次接触 Univer 的开发者来说。

为此，Univer 提供了**插件模式**和**预设模式**两种方式帮助你快速集成和使用 Univer。所谓**预设**实际上就是一组预先配置好的插件组合，因此在无需进行复杂扩展的情况下，两者所提供的能力是相同的。

> [!WARNING: 注意事项]
> * **依赖版本需一致**：无论是使用预设模式还是插件模式的方式，你都必须保证所有依赖的版本号一致。 -
>   **谨慎混用插件和预设**：如果一个插件已经被包含在某个预设中，那么在使用预设时就不需要再单独引入该插件了。否则可能会导致插件冲突或功能异常。

预设模式与插件模式的区别：

| 插件模式               | 预设模式               |
| ------------------ | ------------------ |
| 需要手动引入对应的 facade 包 | 无需手动引入任何 facade 包  |
| 需要注意同类型功能插件注册顺序    | 同功能被包含在预设中无需关注注册顺序 |
| 支持按需懒加载            | 配置的预设会在初始化时同步加载    |
