# string-worker **Repository Path**: mirrors_theajack/string-worker ## Basic Information - **Project Name**: string-worker - **Description**: Makes creating WebWorker easier - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-07 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # [StringWorker](https://github.com/theajack/string-worker)

stars forks version downloads jsdelivr issue

author license Size TopLang Dependent test

🚀 让创建 WebWorker 更轻松

**[在线使用](https://shiyix.cn/jsbox?github=theajack.string-worker) | [English](https://github.com/theajack/string-worker) | [更新日志](https://github.com/theajack/string-worker/blob/master/scripts/version.md) | [问题反馈](https://github.com/theajack/string-worker/issues/new) | [Gitee](https://gitee.com/theajack/string-worker)** ## 0. 介绍 StringWorker 致力于帮助开发者低成本接入WebWorker,在webpack和rollup项目中,引入js或者ts模块作为worker内部代码,无需单独维护woker内部代码 ### 0.2 特性 1. 使用code字符串初始化worker,无需使用第三方url 2. 支持 Promise 获取worker返回的消息 3. 支持webpack、rollup引入loader使用 (开发中...) ## 1. 快速使用 ### 1.0 install #### 1.0.1 npm install ``` npm i string-worker ``` ```js import StringWorker from 'string-worker'; ``` #### 1.0.2 cdn ```html ``` ### 1.1 使用字符串初始化 #### 1.1.1 使用原始数据 ```js const worker = new StringWorker(/* javascript*/` globalThis.addEventListener('message', function (e) { var data = e.data; // do something... console.log('Worker Receive: ', data); globalThis.postMessage('Worker Send: '+data); }, false); `); worker.onMessage(data => { console.log(data); }); worker.postMessage('Hello World'); ``` #### 1.1.2 使用 promise 获取worker的返回值 ```js const worker = new StringWorker(/* javascript*/` globalThis.addEventListener('message', function (e) { var data = e.data; console.log('Worker Receive: ', data); // do something... var message = 'Worker Send: '+data.message; globalThis.postMessage({ message: message, id: data.id }); }, false); `); let id = 0; worker.postMessage({ message: 'Hello World', id: `msg_${id++}`, // 需要传入唯一id以匹配消息 }).then(d => { console.log('Worker Return: ', d); }); ``` ### 1.2. 使用函数初始化 #### 1.2.1 使用js ```js const worker = new StringWorker({ setup () { // 非必须 return {msg: 'hello world'}; }, onmessage (message, data) { // 第二个参数为 setup的返回值 return {receive: message.send + data.msg}; } }); worker.postMessage({send: 'Hello'}).then(d => { console.log(d); }); ``` #### 1.2.2 使用ts传入泛型 声明类型 当使用ts引用时,可以传入泛型来规范 setup 返回值和 message类型 ```ts const worker = new StringWorker< {msg: string}, // setup返回值 {send: string}, // 发送的类型 {receive: string} // 返回的类型 >({ setup () { // 非必须 return {msg: 'hello world'}; }, onmessage (message, data) { // 第二个参数为 setup的返回值 return {receive: message.send + data.msg}; } }); worker.postMessage({send: 'Hello'}).then(d => { console.log(d); }); ``` ## 2 使用 string-worker-loader (开发中...) 目前该部分正在开发中,目前开发者可自行编写一个独立的打包模块将 worker代码打包到一个文件中,然后引入该文件作为 StringWorker 构造参数实现loader功能 ### 2.1 webpack-loader ### 2.2 rollup-loader ### 2.3 esbuild-loader