安裝與基本使用
本章介紹 Univer Slides 的安裝與基本使用。本指南使用 Web SDK 的 Slides 套件。目前沒有 Slides preset,因此需要透過 plugin mode 建立 Slides 應用。
如果你還不熟悉 Univer 的基礎概念,建議先閱讀 快速開始。
Univer 提供預設模式與外掛模式兩種整合方式。預設模式透過預先組合好的外掛簡化設定,更容易上手;如果需要深度擴充,建議使用外掛模式,依需求組合與設定外掛。
透過外掛模式建立
Univer 以外掛形式提供 Slides 能力。瀏覽器端編輯器通常需要先註冊 Univer 共用 runtime、授權外掛、Docs 與 Drawing 依賴,然後再註冊 Slides 的模型和 UI 外掛。
使用套件管理器
使用支援 ES Module 和 package.json 中 exports 欄位的建置工具。
安裝
Univer 使用 React 建構介面、RxJS 處理資料流,也可以嵌入 Vue 或 Angular 應用程式。請確認已安裝 react、react-dom 和 rxjs 這些 peer dependencies1;下方 Yarn 指令已明確包含它們。
所有 @univerjs/* 和 @univerjs-pro/* 套件應保持相同版本。
pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/drawing @univerjs/engine-render @univerjs/ui @univerjs-pro/license @univerjs-pro/slides @univerjs-pro/slides-uinpm install @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/drawing @univerjs/engine-render @univerjs/ui @univerjs-pro/license @univerjs-pro/slides @univerjs-pro/slides-uiyarn add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/drawing @univerjs/engine-render @univerjs/ui @univerjs-pro/license @univerjs-pro/slides @univerjs-pro/slides-ui react react-dom rxjsbun add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/drawing @univerjs/engine-render @univerjs/ui @univerjs-pro/license @univerjs-pro/slides @univerjs-pro/slides-ui使用
初始化 Univer 前,先建立容器並設定明確的高度:
<div id="app" style="height: 600px"></div>呼叫 FUniver.newAPI(univer) 前,請引入下方範例使用的 facade 入口。樣式依 @univerjs/design、@univerjs/ui、產品 CSS 的順序引入。
注意事項
- 註冊 Slides 外掛前,需要先註冊
UniverLicensePlugin。 - 樣式檔案的引入順序很重要,請先引入共用 UI 樣式,再引入產品 UI 樣式。
- 列印、表格、圖表、匯入匯出等可選功能套件,只在產品需要對應能力時再加入。
UniverSlidesUIPlugin會為形狀功能自動載入UniverProFormulaEnginePlugin。如果同一個Univer執行個體還註冊了UniverFormulaEnginePlugin,請安裝@univerjs-pro/engine-formula,並在初始化程式碼中將一般引擎的匯入與註冊替換為UniverProFormulaEnginePlugin。請勿同時註冊兩個公式引擎。
引入樣式檔案、語言包和必要外掛:
TypeScriptimport { UniverLicensePlugin } from '@univerjs-pro/license'import { UniverSlidesPlugin } from '@univerjs-pro/slides'import { UniverSlidesUIPlugin } from '@univerjs-pro/slides-ui'import SlidesUIZhTW from '@univerjs-pro/slides-ui/locale/zh-TW'import SlidesZhTW from '@univerjs-pro/slides/locale/zh-TW'import { LocaleType, mergeLocales, Univer, UniverInstanceType } from '@univerjs/core'import DesignZhTW from '@univerjs/design/locale/zh-TW'import { UniverDocsPlugin } from '@univerjs/docs'import { UniverDocsUIPlugin } from '@univerjs/docs-ui'import DocsUIZhTW from '@univerjs/docs-ui/locale/zh-TW'import { UniverDrawingPlugin } from '@univerjs/drawing'import { UniverRenderEnginePlugin } from '@univerjs/engine-render'import { UniverUIPlugin } from '@univerjs/ui'import UIZhTW from '@univerjs/ui/locale/zh-TW'import '@univerjs/design/lib/index.css'import '@univerjs/ui/lib/index.css'import '@univerjs/docs-ui/lib/index.css'import '@univerjs-pro/slides-ui/lib/index.css'如果需要使用 Facade API2,可以引入相關 facade 入口:
TypeScriptimport { FUniver } from '@univerjs/core/facade'import '@univerjs-pro/slides/facade'建立 Univer 實例,註冊外掛,並建立 Slides unit:
TypeScriptconst univer = new Univer({ locale: LocaleType.ZH_TW, locales: { [LocaleType.ZH_TW]: mergeLocales( DesignZhTW, UIZhTW, DocsUIZhTW, SlidesZhTW, SlidesUIZhTW, ), },})univer.registerPlugin(UniverRenderEnginePlugin)univer.registerPlugin(UniverUIPlugin, { container: 'app',})univer.registerPlugin(UniverDocsPlugin)univer.registerPlugin(UniverDocsUIPlugin)univer.registerPlugin(UniverDrawingPlugin)univer.registerPlugin(UniverLicensePlugin, { license: process.env.CLIENT_LICENSE_TEXT,})univer.registerPlugin(UniverSlidesPlugin)univer.registerPlugin(UniverSlidesUIPlugin)univer.createUnit(UniverInstanceType.UNIVER_SLIDE, {})const univerAPI = FUniver.newAPI(univer)
這裡返回的 univerAPI 物件被稱為 Univer 的 Facade API,透過它可以建立簡報並呼叫 Slides 相關能力。
univer.registerPlugin 與 univer.registerPlugins 方法
univer.registerPlugin 用於將外掛註冊到 Univer 實例。可於建立實例後呼叫。
使用方式:univer.registerPlugin(Plugin, options),其中 Plugin 為外掛類別,options 為該外掛的(可選)設定。
亦可透過 univer.registerPlugins 傳入陣列,一次性註冊多個外掛,便於集中管理:
univer.registerPlugins([ UniverRenderEnginePlugin, [UniverUIPlugin, { container: 'app', }], UniverDocsPlugin, UniverDocsUIPlugin, UniverDrawingPlugin, [UniverLicensePlugin, { license: process.env.CLIENT_LICENSE_TEXT, }], UniverSlidesPlugin, UniverSlidesUIPlugin,])可選功能套件
當編輯器需要對應能力時,再安裝功能套件:
pnpm add @univerjs-pro/slides-printpnpm add @univerjs-pro/slides-table @univerjs-pro/slides-table-uipnpm add @univerjs-pro/chart-ui @univerjs-pro/slides-chart @univerjs-pro/slides-chart-uipnpm add @univerjs-pro/slides-exchange-client懶載入部分外掛
插件模式的一個優勢是可以延遲載入可選功能:
univer.createUnit(UniverInstanceType.UNIVER_SLIDE, {})import('@univerjs-pro/slides-chart').then(({ UniverSlidesChartPlugin }) => { univer.registerPlugin(UniverSlidesChartPlugin)})服務端使用
在 Node.js 中,通常只註冊模型外掛,不註冊瀏覽器 UI 外掛:
univer.registerPlugin(UniverSlidesPlugin)模型外掛用於無頭快照處理。需要提供協同或檔案轉換介面時,請另外接入對應的 Server SDK 模組;僅註冊此外掛不會建立這些服務。
行動裝置支援
這些範例要求安裝的 SDK 套件包含下列行動版匯出。所有 @univerjs/* 與 @univerjs-pro/* 依賴應保持相同版本。
1.0.0-rc.0 尚未匯出 UniverSlidesMobileUIPlugin。使用以下範例前,請選擇已包含該行動版入口的建置版本。
在 Univer Slides 中使用行動版 UI 外掛提供觸控操作介面。3 請在建立編輯器前選定 UI 模式。
在上方外掛模式範例中,替換以下 UI 外掛的匯入與註冊,並在 createUnit() 前完成;不要加到已初始化的桌面版編輯器中。保留模型外掛、引擎、語言套件、CSS 與 Facade 匯入。桌面版與行動版類別是同一個套件入口的不同具名匯出。
import { UniverSlidesMobileUIPlugin } from '@univerjs-pro/slides-ui'import { UniverDocsMobileUIPlugin } from '@univerjs/docs-ui'import { UniverMobileUIPlugin } from '@univerjs/ui'univer.registerPlugin(UniverMobileUIPlugin, { container: 'app' })univer.registerPlugin(UniverDocsMobileUIPlugin)univer.registerPlugin(UniverSlidesMobileUIPlugin)外掛對照
僅註冊所需功能,並保留其模型外掛與必要依賴。提供行動版 UI 匯出不代表兩端介面完全相同。Pro 功能仍需相應授權;需要後端的功能,請在業務應用程式中透過 Univer Server SDK 接入相應能力。
| 套件 | 桌面版註冊 | 行動版註冊 |
|---|---|---|
@univerjs/ui | UniverUIPlugin | UniverMobileUIPlugin |
@univerjs/docs-ui | UniverDocsUIPlugin | UniverDocsMobileUIPlugin |
@univerjs-pro/slides-ui | UniverSlidesUIPlugin | UniverSlidesMobileUIPlugin |
@univerjs/drawing-ui | UniverDrawingUIPlugin | UniverDrawingMobileUIPlugin |
@univerjs/thread-comment-ui | UniverThreadCommentUIPlugin | UniverThreadCommentMobileUIPlugin |
@univerjs-pro/shape-editor-ui | UniverShapeEditorUIPlugin | UniverShapeEditorMobileUIPlugin |
@univerjs-pro/chart-ui | UniverChartUIPlugin | UniverChartMobileUIPlugin |
@univerjs-pro/exchange-client | UniverExchangeClientPlugin | UniverExchangeClientMobileUIPlugin |
@univerjs-pro/slides-chart-ui | UniverSlidesChartUIPlugin | UniverSlidesChartMobileUIPlugin |
@univerjs-pro/slides-print | UniverSlidesPrintPlugin | UniverSlidesPrintMobilePlugin |
@univerjs-pro/slides-table-ui | UniverSlidesTableUIPlugin | UniverSlidesTableMobileUIPlugin |
@univerjs-pro/slides-thread-comment-ui | UniverSlidesThreadCommentUIPlugin | UniverSlidesThreadCommentMobileUIPlugin |
容器與觸控互動
為容器指定明確高度,並設定頁面 viewport。100dvh 隨動態視口高度變化。請在目標行動瀏覽器上檢查捲動、雙指縮放、文字選取、剪貼簿存取與螢幕鍵盤彈出後的版面。僅縮小桌面版編輯器不會切換至行動版外掛。
UniverMobileUIPlugin 預設使用 disableAutoFocus: true,避免編輯器在初始化時自動取得焦點。
<meta name="viewport" content="width=device-width, initial-scale=1" /><div id="app" style="height: 100dvh"></div>其他發佈版本
除穩定版外,Univer 亦提供 alpha / beta 通道。這些版本可讓你搶先體驗未正式釋出的新功能;但請注意,功能更多同時代表風險更高,可能包含錯誤、未完成或不穩定特性。生產環境請謹慎使用。
Alpha / Beta 版本
當團隊完成新功能或重大調整,可能會預先發佈於 alpha 或 beta 通道。可用以下指令安裝:
pnpm add @univerjs-pro/slides@alpha # Alpha 版本
pnpm add @univerjs-pro/slides@beta # Beta 版本npm install @univerjs-pro/slides@alpha # Alpha 版本
npm install @univerjs-pro/slides@beta # Beta 版本yarn add @univerjs-pro/slides@alpha # Alpha 版本
yarn add @univerjs-pro/slides@beta # Beta 版本bun add @univerjs-pro/slides@alpha # Alpha 版本
bun add @univerjs-pro/slides@beta # Beta 版本若於使用 alpha / beta 過程遇到問題或有建議,歡迎透過 GitHub Issues 回報。
祝你搶先體驗愉快!
下一步
- 在 Facade API 中了解如何透過 Facade API 操作 Slides。
- 授權設定
- Server SDK 整合
- 按需接入 功能 章節中的外掛。
Footnotes
你覺得這篇文檔如何?