Skip to content

Установка

Требования

Vue — обязательная peer-зависимость: у этого пакета нет фреймворк-агностичного ядра (в отличие от некоторых других пакетов VueCraft), каждая точка входа — это Vue-composable либо вспомогательная функция для стороны воркера, потребляемая из Vue.

ОкружениеМинимальная версия
Node.js^20.19.0 || ^22.13.0 || >=24.0.0
Vue^3.4.0 (обязательна)

Установка

bash
npm install vue-worker-kit

Никаких peer-зависимостей, кроме самого vue.

Быстрый старт

ts
// heavy-sort.worker.ts
import { defineWorkerHandler } from 'vue-worker-kit/worker'

export default defineWorkerHandler(async (data: number[], ctx) => {
  for (let i = 0; i < data.length; i++) {
    if (ctx.signal.aborted) throw ctx.signal.reason
    if (i % 10_000 === 0) ctx.reportProgress(i / data.length)
  }
  return data.sort((a, b) => a - b)
})
ts
// component setup()
import { useWorker } from 'vue-worker-kit'

const { run, isRunning, progress, error, cancel } = useWorker<typeof import('./heavy-sort.worker')>(
  () => new Worker(new URL('./heavy-sort.worker.ts', import.meta.url), { type: 'module' }),
)

const sorted = await run(hugeArray, { transfer: [hugeArray.buffer] })
// sorted: number[] — выведено из heavy-sort.worker.ts, аннотация generic не нужна