Web workers allow you to run scripts in background threads, providing a way to run tasks without blocking the main thread. This can be particularly useful for handling CPU-intensive tasks. With Vite
, you can easily set up and use web workers with support for ES modules.
Install Vite :
If you haven’t already, you can set up a new Vite
project using the following commands:
npm create vite@latest my-vite-project
cd my-vite-project
npm install
Project Structure:
Here’s an example structure for a Vite
project using web workers:
/project
/src
/workers
worker.js
main.js
index.html
vite.config.js
Create the Web Worker Script
Create a JavaScript file for the worker in the src/workers
directory.
`src/workers/worker.js`
import xyz from "xyz"
self.onmessage = (event) => {
const { data } = event.data;
// Perform some operation
const result = data * 2; // Example logic
// Send Data Back (Kind of Return Statement)
self.postMessage(result);
};
Use the Worker in Your Main Script
In your main script, create a worker instance and communicate with it.
`src/main.js`
// Create a new worker instance
**const worker = new Worker(new URL('./workers/worker.js', import.meta.url), { type: 'module' });**
// Send a message to the worker
worker.postMessage({ data: 42 });
// Listen for messages from the worker
worker.onmessage = (event) => {
console.log('Result from worker:', event.data);
};
// Handle worker errors
worker.onerror = (error) => {
console.error('Worker error:', error);
};
// Terminate the worker when done
// worker.terminate();