@eshaz/web-worker

中文文档
1.2.2发布于 2023/11/27Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 366.2万

在浏览器和节点中一致的Web Works.

中文使用文档
文档目录5 节
  1. 特征
  2. 用法示例
  3. 模块工人
  4. 数据 URL
  5. 特别 谢谢

网络工人 npm

原生跨平台网络工人. 在已出版npm模块中工作.

在节点,这是一个网络兼容 工人执行在op Node's 工作线条( t)。 。 。 .

在浏览器中 (并被捆绑到浏览器时),它仅仅是一个别名: Worker。 。 。 .

特征

这与工人的线条不同之处如下:

  • 使Worker 代码在浏览器和节点之间兼容
  • 支持模块工人{type:'module'}原生地位于12.8+节点
  • 使用 DOM 类事件(Event.data, (中文(简体) ), Event.type页:1
  • 支持事件处理器属性( e)worker.onmessage=..(中文(简体) )
  • Worker() 接受模块 URL、 Blob URL 或数据 URL
  • 模拟浏览器样式 全球范围 在工人内部

用法示例

最简单的形式:

import Worker from 'web-worker';

const worker = new Worker('data:,postMessage("hello")');
worker.onmessage = e => console.log(e.data);  // "hello"
主语.js劳工.js
import Worker from 'web-worker';

const url = new URL('./worker.js', import.meta.url);
const worker = new Worker(url);

worker.addEventListener('message', e => {
  console.log(e.data)  // "hiya!"
});

worker.postMessage('hello');
addEventListener('message', e => {
  if (e.data === 'hello') {
    postMessage('hiya!');
  }
});

* 注意到如何 new URL('./worker.js', import.meta.url) 用于比照当前模块而不是应用程序基址加载工人。 没有这个, Worker URL 是相对于文档的 URL, 在 Node.js 中被解释为 process.cwd()。 。 。 .

在建设工具和测试框架中对这一模式的支持仍然有限。 我们是 努力成长。 。 。 .

模块工人

模块工人在12.8+节点中支持使用此插件,利用节点的本地ES模块支持. 在浏览器中,它们可以本土使用于Chrome 80+,也可以在通过Chrome 80+的所有浏览器中使用 工人插头 或者说 滚出- 插入- 关闭主线。和经典工人一样,节点与浏览器在使用上没有区别:

主语. mjs劳工.mjs
import Worker from 'web-worker';

const worker = new Worker(
  new URL('./worker.mjs', import.meta.url),
  { type: 'module' }
);
worker.addEventListener('message', e => {
  console.log(e.data)  // "200 OK"
});
worker.postMessage('https://httpstat.us/200');
import fetch from 'isomorphic-fetch';

addEventListener('message', async e => {
  const url = e.data;
  const res = await fetch(url)
  const text = await res.text();
  postMessage(text);
});

数据 URL

模块和经典工作者都支持使用数据URL为工人提供证据:

import Worker from 'web-worker';

const worker = new Worker(`data:application/javascript,postMessage(42)`);
worker.addEventListener('message', e => {
  console.log(e.data)  // 42
});

特别 谢谢

本单元旨在提供简单而可忘却的基础设施, 因此它需要一个明显和描述性的名称. @ 卡尔文梅特卡夫,您可以认出谁是作者 说谎 以及其它精良的模块, 慷慨地从他的名字 web-worker 软件包. 谢谢凯文!

版本与发布记录

@eshaz/web-worker 共发布 3 个版本,首次发布于 2022/12/12;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.2.2latest2023/11/272 年前
1.2.12023/06/023 年前
1.2.02022/12/123 年前

关于 @eshaz/web-worker 的常见问题

@eshaz/web-worker 是什么?

在浏览器和节点中一致的Web Works.

如何安装 @eshaz/web-worker?

在项目目录运行 npm install @eshaz/web-worker,或使用 pnpm add / yarn add / bun add。

@eshaz/web-worker 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@eshaz/web-worker 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@eshaz/web-worker 可以商用吗?

@eshaz/web-worker 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@eshaz/web-worker 的下载量有多少?

根据 npm 官方下载统计,@eshaz/web-worker 在 2026/10/14 – 2026/11/12 这 30 天内被下载 3,662,263 次,日均约 122,075 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@eshaz/web-worker 还在维护吗?

最新版本 1.2.2 发布于 2023/11/27(2 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/12/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。