# Web Workers

- Human documentation: [https://docs.univer.ai/ru-RU/guides/docs/getting-started/worker](https://docs.univer.ai/ru-RU/guides/docs/getting-started/worker)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/docs/getting-started/worker.md](https://docs.univer.ai/ru-RU/guides/docs/getting-started/worker.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [docs/getting-started/worker.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/getting-started/worker.ru-RU.mdx)

---

Docs может выполнять компоновку документа в Web Worker[^web-worker] через `UniverDocsLayoutWorkerPlugin`. Зарегистрируйте его после основного плагина Docs. `workerFactory` создаёт новый Worker для службы компоновки.

Сначала выполните [установку и базовую настройку](https://docs.univer.ai/ru-RU/guides/docs/getting-started/installation.md). Эти фрагменты дополняют существующую конфигурацию. Регистрируйте плагины до создания или загрузки содержимого; изменяйте уже имеющуюся регистрацию без дублирования.

## Основной поток

```typescript title="main.ts"
import { UniverDocsLayoutWorkerPlugin } from '@univerjs/docs'

univer.registerPlugin(UniverDocsLayoutWorkerPlugin, {
  workerFactory: () => new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }),
})
```

## Точка входа Worker

```typescript title="worker.ts"
import { startDocsLayoutWorker } from '@univerjs/docs'

startDocsLayoutWorker()
```

Используйте модульный Worker и отдельный файл точки входа. Версии пакетов в обоих потоках должны совпадать. Отрисовка и взаимодействие с пользователем остаются в основном потоке.

[^web-worker]: Web Worker выполняет JavaScript вне главного потока браузера и обменивается с ним сообщениями. Прямого доступа к DOM нет: перенос вычислений не переносит интерфейс редактора.
