# 基本概念

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

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

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

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

---

了解 Univer Docs 的外掛、快照、命令與 Facade API。需要建立編輯器時，請繼續閱讀[安裝與基本使用](https://docs.univer.ai/zh-TW/guides/docs/getting-started/installation.md)。

## 基本概念

在進一步深入瞭解 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-TW/guides/docs/features/hyper-link.md) 介紹如何透過預設模式或外掛模式新增 Docs 功能
2. [Univer 架構](/blog/univer) 詳細瞭解 Univer 的架構設計

### 快照

Univer Docs 使用 [`IDocumentData`](https://docs.univer.ai/zh-TW/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-TW/guides/docs/getting-started/facade.md)
2. [Facade API 常用方法](https://docs.univer.ai/zh-TW/guides/docs/features/core/general-api.md)
3. [Univer Docs API 常用方法](https://docs.univer.ai/zh-TW/guides/docs/features/core/docs-api.md)

## 預設模式與外掛模式

Univer 採用了外掛化的設計理念，旨在為開發者提供一個靈活、可擴充的電子文件應用框架。透過外掛化設計，Univer 可以輕鬆地整合各種功能模組，從而滿足不同使用者的需求。但外掛化的設計會增加應用的複雜性，尤其是對於首次接觸 Univer 的開發者來說。

為此，Univer 提供了**外掛模式**和**預設模式**兩種方式幫助你快速整合和使用 Univer。所謂**預設**實際上就是一組預先配置好的外掛組合，因此在無需進行復雜擴充的情況下，兩者所提供的能力是相同的。

> [!WARNING: 注意事項]
> * **依賴版本需一致**：無論是使用預設模式還是外掛模式的方式，你都必須保證所有依賴的版本號一致。
> * **謹慎混用外掛和預設**：如果一個外掛已經被包含在某個預設中，那麼在使用預設時就不需要再單獨引入該外掛了。否則可能會導致外掛衝突或功能異常。

預設模式與外掛模式的區別：

| 外掛模式               | 預設模式               |
| ------------------ | ------------------ |
| 需要手動引入對應的 facade 包 | 無需手動引入任何 facade 包  |
| 需要注意同型別功能外掛註冊順序    | 同功能被包含在預設中無需關注註冊順序 |
| 支援按需懶載入            | 設定的預設會在初始化時同步載入    |
