Установка
Требования
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 не нужна