Web SDK

Установка и основы использования

В основе архитектуры Univer лежит система плагинов. Она предоставляет разработчикам гибкий и расширяемый фреймворк для приложений, работающих с электронными документами. Благодаря такой архитектуре в Univer легко интегрировать различные функциональные модули под потребности разных пользователей. Однако она также усложняет приложение, особенно для разработчиков, которые только начинают знакомство с Univer.

Чтобы упростить быструю интеграцию и начало работы с Univer, предусмотрено два варианта: режим плагинов и режим пресетов. Пресет представляет собой набор предварительно настроенных плагинов, поэтому без сложных расширений оба режима предоставляют одинаковые возможности.

Внимание

  • Одинаковые версии зависимостей: независимо от того, используете вы режим пресетов или плагинов, версии всех зависимостей должны совпадать.
  • Осторожно сочетайте плагины и пресеты: если плагин уже входит в пресет, при использовании этого пресета не нужно импортировать плагин отдельно. Иначе возможны конфликты плагинов или некорректная работа функций.

Различия между режимами пресетов и плагинов:

Режим плагиновРежим пресетов
Соответствующие пакеты Facade API нужно импортировать вручнуюПакеты Facade API не нужно импортировать вручную
Необходимо учитывать порядок регистрации плагинов с одинаковой функциональностьюНе нужно учитывать порядок регистрации функций, входящих в пресеты
Поддерживается ленивая загрузка отдельных плагиновНастроенные пресеты загружаются синхронно при инициализации

Univer поддерживает два способа интеграции: режим предустановок и режим плагинов. Предустановки упрощают настройку благодаря готовым наборам плагинов. Для глубокой настройки и расширения возможностей рекомендуем режим плагинов, позволяющий комбинировать и настраивать плагины по отдельности.

Настройка в режиме пресетов

Ниже показано, как менее чем за двадцать строк кода быстро создать приложение Univer Docs.

С помощью менеджера пакетов

Если в вашем проекте уже используются современные инструменты фронтенд-разработки, интегрировать Univer будет очень просто. Для сборки приложений Univer рекомендуем инструменты с хорошей поддержкой ES Modules, например Vite, esbuild или Webpack 5. Для других инструментов сборки, например Webpack 4, может потребоваться дополнительная настройка.

Установка

Установите @univerjs/presets с помощью выбранного менеджера пакетов:

Shell
pnpm add @univerjs/presets @univerjs/preset-docs-core

Использование

Если ваш инструмент сборки не поддерживает поле exports в package.json, как это часто бывает с Webpack 4, необходимо вручную заменить сопоставленные пути фактическими.

Следующий код запускает приложение Univer Docs:

HTML
<div id="app" style="height: 600px"></div>
TypeScript
import { UniverDocsCorePreset } from '@univerjs/preset-docs-core'import UniverPresetDocsCoreEnUS from '@univerjs/preset-docs-core/locales/en-US'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-docs-core/lib/index.css'const { univer, univerAPI } = createUniver({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetDocsCoreEnUS,    ),  },  presets: [    UniverDocsCorePreset({      container: 'app',    }),  ],})univerAPI.createDocument({})

Возвращаемый объект univerAPI называется Univer Facade API1. Через него можно обращаться ко многим функциям Univer.

UniverDocsCorePreset также можно импортировать из @univerjs/presets/preset-docs-core, но при этом необходимо убедиться, что ваш инструмент сборки поддерживает поле exports в package.json.

Метод createUniver

Метод createUniver принимает объект с настройками Univer, например языком, темой и плагинами. Он возвращает объект, содержащий экземпляр Univer и экземпляр Univer Facade API.

Некоторые свойства объекта конфигурации:

  • locale: языковая среда; может быть значением перечисления LocaleType.
  • locales: объект локалей, в котором ключом служит языковая среда, а значением — объект языкового пакета.
  • theme: необязательный объект темы.
  • presets: массив регистрируемых пресетов, например UniverDocsCorePreset.
  • plugins: массив дополнительных регистрируемых плагинов.

Плагины, которые не входят ни в один пакет пресета, а также собственные плагины можно зарегистрировать через свойство plugins. Кроме того, после получения экземпляра Univer плагины можно регистрировать методом univer.registerPlugin.

Подробнее о методе createUniver см. в справочнике API: createUniver.

Импорт из CDN

Если вы не хотите использовать менеджер пакетов или просто хотите быстро попробовать возможности Univer, необходимые ресурсы можно импортировать через CDN. Подробнее см. в разделе Использование Univer через CDN.

Поддержка мобильных устройств

Для примеров нужны пакеты SDK, экспортирующие перечисленные мобильные плагины. Все зависимости @univerjs/* и @univerjs-pro/* должны иметь одинаковую версию.

1.0.0-rc.0 не экспортирует UniverDocsMobileUIPlugin. Для этого примера используйте сборку, содержащую соответствующую мобильную точку входа.

Для сенсорного интерфейса Univer Docs используйте мобильные UI-плагины.2 Выберите режим до создания редактора.

В примере режима плагинов выше замените следующие импорты и регистрации UI до вызова createUnit(). Не добавляйте их к уже инициализированному настольному редактору. Сохраните плагины моделей, движки, локализации, CSS и импорты Facade. Классы экспортируются под разными именами из одной точки входа пакета.

TypeScript
import { UniverDocsMobileUIPlugin } from '@univerjs/docs-ui'import { UniverMobileUIPlugin } from '@univerjs/ui'univer.registerPlugin(UniverMobileUIPlugin, { container: 'app' })univer.registerPlugin(UniverDocsMobileUIPlugin)

Текущие UniverSheetsCorePreset и UniverDocsCorePreset регистрируют настольный UI и не имеют параметра mobile: true. Для мобильного режима явно соберите набор плагинов. Добавление мобильных плагинов после настольного пресета не заменяет его UI.

Соответствие плагинов

Регистрируйте только нужные функции, сохраняя плагины моделей и зависимости. Наличие мобильного UI не означает одинаковый набор элементов управления на обеих платформах. Функциям Pro по-прежнему нужны соответствующая лицензия. Для функций, которым нужен backend, подключите соответствующие модули Univer Server SDK к своему приложению.

ПакетНастольная регистрацияМобильная регистрация
@univerjs/uiUniverUIPluginUniverMobileUIPlugin
@univerjs/docs-uiUniverDocsUIPluginUniverDocsMobileUIPlugin
@univerjs/drawing-uiUniverDrawingUIPluginUniverDrawingMobileUIPlugin
@univerjs/thread-comment-uiUniverThreadCommentUIPluginUniverThreadCommentMobileUIPlugin
@univerjs-pro/shape-editor-uiUniverShapeEditorUIPluginUniverShapeEditorMobileUIPlugin
@univerjs-pro/chart-uiUniverChartUIPluginUniverChartMobileUIPlugin
@univerjs-pro/exchange-clientUniverExchangeClientPluginUniverExchangeClientMobileUIPlugin
@univerjs/docs-drawing-uiUniverDocsDrawingUIPluginUniverDocsDrawingMobileUIPlugin
@univerjs/docs-hyper-link-uiUniverDocsHyperLinkUIPluginUniverDocsHyperLinkMobileUIPlugin
@univerjs/docs-thread-comment-uiUniverDocsThreadCommentUIPluginUniverDocsThreadCommentMobileUIPlugin
@univerjs-pro/docs-callout-uiUniverDocsCalloutUIPluginUniverDocsCalloutMobileUIPlugin
@univerjs-pro/docs-chart-uiUniverDocsChartUIPluginUniverDocsChartMobileUIPlugin
@univerjs-pro/docs-code-uiUniverDocsCodeUIPluginUniverDocsCodeMobileUIPlugin
@univerjs-pro/docs-column-uiUniverDocsColumnUIPluginUniverDocsColumnMobileUIPlugin
@univerjs-pro/docs-formula-uiUniverDocsFormulaUIPluginUniverDocsFormulaMobileUIPlugin
@univerjs-pro/docs-latex-uiUniverDocsLatexUIPluginUniverDocsLatexMobileUIPlugin
@univerjs-pro/docs-list-uiUniverDocsListUIPluginUniverDocsListMobileUIPlugin
@univerjs-pro/docs-quote-uiUniverDocsQuoteUIPluginUniverDocsQuoteMobileUIPlugin
@univerjs-pro/docs-shape-uiUniverDocsShapeUIPluginUniverDocsShapeMobileUIPlugin
@univerjs-pro/docs-table-uiUniverDocsTableUIPluginUniverDocsTableMobileUIPlugin

Контейнер и сенсорное управление

Задайте явную высоту контейнера и viewport страницы. 100dvh соответствует динамической высоте области просмотра. Проверьте прокрутку, масштабирование двумя пальцами, выделение текста, буфер обмена и экранную клавиатуру в целевых мобильных браузерах. Уменьшение ширины не включает мобильные плагины.

UniverMobileUIPlugin по умолчанию использует disableAutoFocus: true, чтобы редактор не получал фокус автоматически при инициализации.

HTML
<meta name="viewport" content="width=device-width, initial-scale=1" /><div id="app" style="height: 100dvh"></div>

Настройка в режиме плагинов

Возможности Univer предоставляются в виде набора плагинов. Помимо основных плагинов, необходимых для работы продукта, вы можете подключать другие по мере необходимости. Ниже на примере простейшего приложения Univer Docs показано, как вручную подобрать и установить плагины.

В отличие от режима пресетов, в режиме плагинов Facade API по умолчанию не подключается. В примерах ниже используется Facade API, поэтому перед созданием его экземпляра импортируйте соответствующие пакеты.

Использование менеджера пакетов

Установка

Univer использует React для интерфейса и RxJS для потоков данных; его также можно встроить в Vue или Angular. Убедитесь, что peer dependencies3 react, react-dom и rxjs установлены. Команда Yarn ниже включает их явно.

Используйте одинаковую версию всех пакетов @univerjs/* и @univerjs-pro/*.

Shell
pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/ui

Использование

Перед инициализацией Univer создайте контейнер и задайте ему явную высоту:

HTML
<div id="app" style="height: 600px"></div>

Перед вызовом FUniver.newAPI(univer) импортируйте точки входа facade из примера ниже. Импортируйте CSS в порядке: @univerjs/design, @univerjs/ui, затем CSS продукта.

Внимание

  • Пакеты Facade API, языковые пакеты и файлы стилей есть не у всех плагинов. Это указывается в документации каждой функции.
  • Порядок импорта файлов стилей имеет значение. Импортируйте CSS-стили @univerjs/design и @univerjs/ui перед стилями остальных плагинов.
  1. Импортируйте в проект файлы стилей Univer, языковые пакеты и необходимые плагины:

    TypeScript
    import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { FUniver } from '@univerjs/core/facade'import DesignEnUS from '@univerjs/design/locale/en-US'import { UniverDocsPlugin } from '@univerjs/docs'import { UniverDocsUIPlugin } from '@univerjs/docs-ui'import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'import { UniverRenderEnginePlugin } from '@univerjs/engine-render'import { UniverUIPlugin } from '@univerjs/ui'import UIEnUS from '@univerjs/ui/locale/en-US'import '@univerjs/design/lib/index.css'import '@univerjs/ui/lib/index.css'import '@univerjs/docs-ui/lib/index.css'
  2. Импортируйте пакеты Facade API, используемые в примере:

    TypeScript
    import '@univerjs/engine-formula/facade'import '@univerjs/ui/facade'import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'
  3. Затем создайте экземпляр Univer и зарегистрируйте плагины:

    TypeScript
    const univer = new Univer({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      DesignEnUS,      UIEnUS,      DocsUIEnUS,    ),  },})univer.registerPlugin(UniverRenderEnginePlugin)univer.registerPlugin(UniverFormulaEnginePlugin)univer.registerPlugin(UniverUIPlugin, {  container: 'app',})univer.registerPlugin(UniverDocsPlugin)univer.registerPlugin(UniverDocsUIPlugin)const univerAPI = FUniver.newAPI(univer)univerAPI.createDocument({})

Методы univer.registerPlugin и univer.registerPlugins

Метод univer.registerPlugin используется для регистрации плагина в экземпляре Univer. После создания экземпляра Univer вызовите этот метод, чтобы зарегистрировать плагины.

Плагин можно зарегистрировать с помощью метода univer.registerPlugin(Plugin, options), где Plugin — регистрируемый плагин, а options — необязательные параметры конфигурации, которые могут различаться в зависимости от плагина.

Для одновременной регистрации нескольких плагинов передайте массив в univer.registerPlugins. Это удобно, когда требуется централизованно управлять плагинами.

TypeScript
univer.registerPlugins([  UniverRenderEnginePlugin,  UniverFormulaEnginePlugin,  [UniverUIPlugin, {    container: 'app',  }],  UniverDocsPlugin,  UniverDocsUIPlugin,])

Ленивая загрузка плагинов

Одно из распространённых преимуществ режима плагинов — возможность гибко управлять временем их загрузки. Например, при инициализации приложения можно загрузить только основные плагины, а остальные — после завершения первого рендеринга.

TypeScript
// ...const univerAPI = FUniver.newAPI(univer)univerAPI.createDocument({})import('@univerjs/watermark').then(({ UniverWatermarkPlugin }) => {  univer.registerPlugin(UniverWatermarkPlugin, {    textWatermarkSettings: {      content: 'Hello, Univer!',      fontSize: 36,    },  })})

Импорт из CDN

Если вы не хотите использовать менеджер пакетов или просто хотите быстро попробовать возможности Univer, необходимые ресурсы можно импортировать через CDN. Подробнее см. в разделе Использование Univer через CDN.

Другие каналы выпуска

Помимо стабильных выпусков, Univer предлагает каналы alpha / beta и nightly. Они позволяют заранее получить доступ к новейшим функциям, которые еще не выпущены официально. Однако вместе с новыми возможностями возрастают и риски: такие версии могут содержать ошибки, неполные или нестабильные функции. По возможности не используйте их в рабочей среде.

Выпуски Alpha / Beta

После завершения работы над новой функцией или существенным изменением команда разработчиков Univer может предварительно опубликовать их в канале alpha или beta. Установить alpha- или beta-версию пакета Univer можно следующей командой:

Shell
pnpm add @univerjs/<package-name>@alpha # Alpha version
pnpm add @univerjs/<package-name>@beta # Beta version

Если при использовании alpha- или beta-версий вы обнаружите проблему или захотите поделиться отзывом, сообщите об этом команде разработчиков Univer через GitHub Issues.

Мы будем рады вашим отзывам о предварительных выпусках.

Что дальше

Footnotes

  1. Facade — прикладной API зарегистрированных плагинов. Импорт точки входа Facade добавляет методы API, но не регистрирует сам функциональный плагин. ↩

  2. Мобильный UI-плагин выбирает сенсорные элементы управления и мобильные сервисы при инициализации. Он не определяет устройство автоматически и не переключает существующий экземпляр при изменении размера окна. Чтобы сменить режим, сохраните состояние документа, уничтожьте старый экземпляр и инициализируйте выбранный набор плагинов. ↩

  3. peerDependencies — зависимости, совместимые версии которых предоставляет основное приложение. Это позволяет Univer и приложению использовать общую копию библиотек, например React. ↩

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.