通用 API

根 Facade API 将通用 Univer 运行时与当前应用注册的 Slides 插件组合在一起。本页介绍命令、事件、历史记录和 Unit 生命周期,不假设读者使用过其他 Univer 品类。演示文稿对象请继续阅读 Univer Slides API。

创建 API 对象

注册 Univer 实例及所需插件后,创建一个 FUniver 包装对象:

TypeScript
import { FUniver } from '@univerjs/core/facade'const univerAPI = FUniver.newAPI(univer)

在此之前导入的 Facade 入口会在同一个对象上扩展 Slides 方法。

命令

executeCommand() 会异步执行已注册的命令。只有命令明确支持同步执行时才使用 syncExecuteCommand()。常用 Slides 操作应优先使用 Facade 方法。

事件

TypeScript
const commandLog = univerAPI.addEvent(  univerAPI.Event.CommandExecuted,  ({ id }) => console.log('Executed:', id))// 不再需要监听时释放它。commandLog.dispose()

应用需要检查或取消命令时,可以监听 BeforeCommandExecute。LifeCycleChanged 会报告编辑器进入 Rendered、Steady 等阶段。

撤销与重做

撤销和重做作用于当前获得焦点的 Univer Unit,并返回 Promise:

TypeScript
await univerAPI.undo()await univerAPI.redo()

Slides Facade 变更通过命令管线执行,因此受支持的变更会进入同一份历史记录。

系统剪贴板

注册 UniverSlidesUIPlugin 并让 Slides 画布获得焦点后,copy() 复制当前选中内容,paste() 通过 Slides UI 命令插入剪贴板内容。

TypeScript
import '@univerjs/ui/facade'await univerAPI.copy()await univerAPI.paste()

画布右键菜单支持普通粘贴、粘贴为文本和粘贴为图片。文本模式根据剪贴板文本创建可编辑文本框;图片模式使用剪贴板中的图片文件或 HTML 中可用的图片资源,不会将任意内容自动转成图片。

编辑形状或表格内的文字时,文本编辑器提供保留源格式、匹配目标格式和仅保留文本,粘贴后也可通过格式菜单调整。

这些操作需要浏览器编辑器获得焦点及剪贴板权限,不适用于仅模型的 Node.js 环境。浏览器阻止读取剪贴板时,可使用系统粘贴快捷键。

UI

UI Facade 可以显示消息、打开对话框或侧边栏、注册组件,并控制内置 UI 区域:

TypeScript
univerAPI  .showMessage({ content: 'Presentation saved', type: 'success' })  .setUIVisible(univerAPI.Enum.BuiltInUIPart.TOOLBAR, true)

这些方法依赖 UniverUIPlugin;Slides 编辑控件还需要 UniverSlidesUIPlugin。

WebSocket

WebSocket 是由 Network Facade 提供的可选能力:

TypeScript
import { UniverNetworkPlugin } from '@univerjs/network'import '@univerjs/network/facade'univer.registerPlugin(UniverNetworkPlugin)const socket = univerAPI.createSocket('wss://example.com/slides')socket.open$.subscribe(() => socket.send('ready'))

消息协议、身份认证、重连和协作冲突处理仍由宿主应用负责。

枚举

univerAPI.Enum 提供通用运行时枚举,以及 Slides 扩展的枚举:

TypeScript
const lifecycle = univerAPI.Enum.LifecycleStages.Steadyconst transition = univerAPI.Enum.SlideTransitionTypeEnum.Fadeconst elementType = univerAPI.Enum.SlidePageElementTypeEnum.Shape

工具

univerAPI.Util 提供数字格式化、矩形运算和通用工具等共享辅助能力:

TypeScript
const payload = univerAPI.Util.tools.deepClone({  slideId: 'slide-1',  selectedElementIds: ['element-1'],})

你觉得这篇文档如何?

© 2026 DreamNum Co., Ltd.