# @eshaz/web-worker 中文文档

规范地址：https://npmcn.com/package/%40eshaz/web-worker/

版本：1\.2\.2
npm 元数据更新时间：2023-11-26T16:53:21.372Z
中文译文更新时间：2026-11-13T22:13:54.810Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40eshaz/web-worker
原文对照：https://npmcn.com/package/%40eshaz/web-worker/?lang=original
项目主页：https://github.com/eshaz/web-worker
源码仓库：https://github.com/eshaz/web-worker

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：30.7 kB，8 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2022-12-11T21:21:55.628Z
- 最新版本发布：2023-11-26T16:53:21.189Z
- 近 30 天下载量：3662263（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @eshaz/web-worker
```

也可以使用：`pnpm add @eshaz/web-worker`、`yarn add @eshaz/web-worker`、`bun add @eshaz/web-worker`

## README

# 网络工人 [![npm](https://img.shields.io/npm/v/web-worker.svg?style=flat-square)](https://www.npmjs.org/package/web-worker)

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

![](https://user-images.githubusercontent.com/105127/79602228-1998bf00-80b8-11ea-91e4-26b212aabaa2.png)

**在节点**,这是一个网络兼容 工人执行在op Node's [工作线条( t)](https://nodejs.org/api/worker_threads.html)。 。 。 .

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

### 特征

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

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

### 用法示例

最简单的形式:

```js
import Worker from 'web-worker';

const worker = new Worker('data:,postMessage("hello")');
worker.onmessage = e => console.log(e.data);  // "hello"
```

| **主语.js** | **劳工.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');
```

 | 

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

 |

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

> _在建设工具和测试框架中对这一模式的支持仍然有限。 我们是 [努力成长](https://github.com/developit/web-worker/issues/4)。 。 。 ._

### 模块工人

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

| **主语. mjs** | **劳工.mjs** |
| --- | --- |
| 
```js
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');
```

 | 

```js
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为工人提供证据:

```js
import Worker from 'web-worker';

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

### 特别 谢谢

本单元旨在提供简单而可忘却的基础设施, 因此它需要一个明显和描述性的名称. [@ 卡尔文梅特卡夫](https://github.com/calvinmetcalf),您可以认出谁是作者 [说谎](https://github.com/calvinmetcalf/lie) 以及其它精良的模块, 慷慨地从他的名字 `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 和提交记录判断。

