# 基本概念

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

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

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

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

---

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

## 基本概念

在進一步深入了解 Univer 前，請先閱讀本節以掌握其基本概念，有助你更順利地使用 Univer。

基本概念包含：

* 外掛（Plugin）
* 快照（Snapshot）
* 命令（Command）
* Facade API

### 外掛

Univer 的功能皆由外掛提供；外掛是 Univer 的基本組成單元，多個外掛組合即構成一個 Univer 應用。

外掛的職責包含：

1. 實作具體功能，例如 `@univerjs/sheets-filter` 提供篩選功能
2. 提供底層能力，例如 `@univerjs/engine-render` 提供渲染能力

你可依需求挑選並組合 Univer 所提供的外掛，客製出符合情境的應用，避免載入不必要的程式碼。你亦可撰寫自訂外掛以擴充功能，滿足個別化需求。

#### 相關連結

1. [撰寫一個 CSV 匯入外掛](/blog/csv-import-plugin) 了解如何編寫外掛
2. [Univer 架構](/blog/univer) 深入理解架構設計

### 快照

在 Univer 中需載入「快照」才能載入文件。每種文件類型都有其專屬的快照格式，請參考下列 API 文件以撰寫符合格式的快照：

1. 試算表的快照格式為 [`IWorkbookData`](https://docs.univer.ai/zh-TW/guides/sheets/model/workbook-data.md#iworkbookdata)
2. 文件的快照格式為 [`IDocumentData`](https://docs.univer.ai/zh-TW/reference/types/document-data.md)

功能外掛可透過 `resources` 欄位儲存資源（如圖片等），可參考[外掛自訂模型](/blog/custom-model)。

> [!WARNING: 注意事項]
> 注意！Univer 的快照僅用於儲存資料；在執行階段它不會自動反映最新的文件狀態。若你想將當前文件狀態保存為快照，請使用
> Facade API 所提供的保存快照方法。

### 命令

在 Univer 中，所有對資料的修改皆須透過「命令」執行。命令導向的模式可更好追蹤變更，並支援復原、重做、協同編輯與處理多功能間的複雜關聯邏輯。

若你想以命令方式修改文件資料，請參考[如何查找命令 ID](/blog/find-the-command-id)。若你改用 Facade API 修改，底層其實是由 Facade API 代你組裝參數並執行對應命令。

> [!WARNING: 注意事項]
> **請勿直接修改 snapshot！** 這樣不會生效，亦不會觸發視圖或 UI 更新；請透過命令或 Facade API 進行資料修改。

### Facade API

由於辦公類應用的複雜度極高，Univer 的架構也相對複雜。為降低使用門檻，我們提供 Facade API——這是對 Univer 官方外掛的封裝，提供更簡潔的介面，協助開發者快速上手。

目前 Facade API 仍在持續完善中，若你有任何建議或需求，歡迎於 GitHub 提出 issue。

當然，簡化的同時亦代表取捨；若你需要更進階的自訂能力，則需在理解 Univer 架構後，直接使用較底層的命令與模組所曝露的 API。

#### 相關連結

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

## 預設模式與外掛模式

Univer 採用外掛化的設計理念，旨在為開發者提供一個彈性、可擴充的電子文件應用框架。透過外掛式設計，Univer 能輕鬆整合各類功能模組，以滿足不同使用者的需求。但此種設計也提高了應用的複雜度，尤其對初次接觸 Univer 的開發者來說可能較陌生。

為此，Univer 提供 **外掛模式** 與 **預設模式** 兩種方式協助你快速整合與使用。所謂「預設」其實就是一組預先配置好的外掛組合；在無需進行進階擴充的情況下，兩種模式能提供的能力是等同的。

> [!WARNING: 注意事項]
> * **相依套件版本需一致**：無論使用預設模式或外掛模式，請務必確保所有相依套件的版本號保持一致。
> * **謹慎混用外掛與預設**：若某個外掛已被某個預設包含，使用該預設時就不需再額外單獨引入，否則可能導致衝突或功能異常。

預設模式與外掛模式的差異：

| 外掛模式                | 預設模式               |
| ------------------- | ------------------ |
| 需要手動引入對應的 Facade 套件 | 無需手動引入任何 Facade 套件 |
| 需注意同類型功能外掛的註冊順序     | 預設內已處理註冊順序，無需關注    |
| 支援按需（懶）載入           | 設定的預設會在初始化時同步載入    |
