Skip to content

Worker Kit

Типобезопасные composables для Web Worker'ов во Vue 3 — useWorker(), пул воркеров и реактивный useWorkerComputed(), с типами, выводимыми прямо из файла воркера.

Вынос вычислений в отдельный поток без блокировки UI

useWorker запускает тяжёлые синхронные задачи (сортировка, парсинг, обработка изображений) в настоящем системном потоке (Worker). Основной поток остаётся свободным для рендеринга и обработки событий — UI не тормозит даже при выполнении сложных расчётов, которые на главном потоке вызывали бы заметные фризы.

Пул воркеров для параллельной обработки данных

createWorkerPool создаёт пул воркеров, распределяя задачи между ними с ограничением параллелизма. Метод pool.map обрабатывает массивы данных конкурентно, сохраняя порядок результатов — это даёт реальное ускорение на многоядерных системах за счёт параллельного выполнения на нескольких CPU-ядрах одновременно, особенно эффективно для пакетной обработки изображений или расчётов.

Реактивные вычисления в фоне через useWorkerComputed

useWorkerComputed работает как reactive computed, но все тяжёлые пересчёты выполняются внутри воркера. При изменении зависимостей (например, вводимого текста) старый вычисляемый запуск автоматически отменяется, а новый стартует с дебаунсом. Результат всегда актуален, при этом основной поток не блокируется даже при частых изменениях источника.

Сквозная типизация без дублирования и ручных аннотаций

Типы входных и выходных данных выводятся автоматически из самого файла воркера через typeof import. Вам не нужно описывать их дважды — ни в воркере, ни на стороне вызова. Это даёт полную типобезопасность, автодополнение и проверку на этапе компиляции, не создавая лишнего связующего кода между главным потоком и воркером.

Продвинутое управление: transferables, стриминг, кэш и ретраи

Передавайте большие бинарные данные (ArrayBuffer, OffscreenCanvas) без копирования через transferables. Получайте промежуточные результаты через стриминг (reportChunk) для прогрессивного рендеринга. Включайте LRU-кэширование для повторяющихся вычислений и автоматические ретраи с экспоненциальной задержкой для аварийно устойчивых операций. Встроенная DevTools-панель показывает состояние пула и задачи.