@chainsafe/threads

中文文档
1.11.3发布于 2025/09/12MITTypeScriptESM + CJS近 30 天下载 1.3万

网络工人和工人线程如函数调用一样简单

中文使用文档
文档目录12 节
  1. 特征
  2. 0.x 版本数
  3. 安装
  4. 平台支持
  5. 开始
  6. 基本情况
  7. 产卵( )
  8. 曝光()
  9. 使用量
  10. 网络软件包
  11. 调试
  12. 许可证

threads.js

Build status npm (tag) Chat room


将CPU密集型任务卸入到节点.js中的工人线程,使用一个统一的API的网页浏览器和电子.

在浏览器中使用网络工人, worker_threads 在节点12+和 tiny-worker 在节点8到11.

特征

  • 对 aync 函数 打开 观测
  • 写代码一次,运行它 在所有平台上
  • 管理大宗任务的执行 线程池
  • 使用 要求( ) 财务报告和审定财务报表 导入编号 :导出 在工人当中
  • 不错 网络软件包

0.x 版本数

你可以找到旧版本的0.12线程.js v0 分支。本页面的所有内容都指1.0版本,该版本是用全新的API重写库.

安装

npm install threads tiny-worker

您只需要安装 tiny-worker 用于支持节点.js < 12的软件包 这是一种可选的依赖,如果 worker_threads 无法获取.

平台支持

在节点上运行( J)

使用线程运行代码. js在节点中工作在框外.

请注意,我们包 本地 Worker这样 new Worker("./foo/bar") 将解析相对于调用它的模块的路径,而不是相对于当前工作目录.

将密码与网络包装或包裹捆绑起来时的行为一致.

Webpack 建立设置

网络包配置

与 threads-plugin它将透明地检测所有 new Worker("./unbundled-path") 表达式,将工人代码捆绑并替换 new Worker(...) 路径与工人捆绑路径,所以你不需要明确使用 worker-loader 或定义额外的切入点.

  npm install -D threads-plugin

那就加进你的 webpack.config.js数字 :

+ const ThreadsPlugin = require('threads-plugin');

  module.exports = {
    // ...
    plugins: [
+     new ThreadsPlugin()
    ]
    // ...
  }

节点.js捆绑

如果您正在使用 Webpack 创建将运行在节点的捆绑( Webpack 配置) target: "node"),您还需要指定 tiny-worker 用于节点 < 12的软件包不应捆绑:

  module.exports = {
    // ...
+   externals: {
+     "tiny-worker": "tiny-worker"
+   }
    // ...
}

一定要保证 tiny-worker 列在您的 package.json dependencies 在这样的情况下.

使用类型脚本时

注:您需要使用Typescript版本4+,因为由线程所生成的类型.js不支持Typescript 3.

确保 TypeScript 编译器保留 import 编号 : export 语句完好无损,所以网包可以解决. 否则 threads-plugin 将无法完成它的工作.

  module.exports = {
    // ...
    module: {
      rules: [
        {
          test: /\.ts$/,
          loader: "ts-loader",
+         options: {
+           compilerOptions: {
+             module: "esnext"
+           }
+         }
        }
      ]
    },
    // ...
  }
Parcel 捆绑器设置

您需要导入 threads/register 在您的应用代码开头( 在主代码中, 而不是在工人中) :

  import { spawn } from "threads"
+ import "threads/register"

  // ...

  const work = await spawn(new Worker("./worker"))

这个是图书馆的 Worker 作为全球平台的 Worker。这是必要的,因为你不能 import { Worker } from "threads" 否则帕塞尔就认不出 new Worker() 作为网络工人了.

要知道,这可能会影响到任何试图对普通网络工人进行即时攻击的代码 Worker 而现在却瞬间将一线接通. 编 Worker线条.js Worker 但这种糖可能对第三方图书馆产生意外的副作用.

其他一切皆应取出.

开始

基本情况

// master.js
import { spawn, Thread, Worker } from "threads"

const auth = await spawn(new Worker("./workers/auth"))
const hashed = await auth.hashPassword("Super secret password", "1234")

console.log("Hashed password:", hashed)

await Thread.terminate(auth)
// workers/auth.js
import sha256 from "js-sha256"
import { expose } from "threads/worker"

expose({
  hashPassword(password, salt) {
    return sha256(password + salt)
  }
})

产卵( )

这个 hashPassword() 函数 auth 主代码中的对象代表调用 hashPassword() 劳动者中的职能:

如果工人的函数返回一个承诺或一个可观察到的,那么您可以在主代码中像这样使用返回值. 如果函数返回了原始值,则期望主函数返回一个解决该值的许诺.

曝光()

使用 expose() 使包含方法的函数或对象可以从主线程调用.

在暴露物体的情况下, spawn() 将同步返回显示所有对象功能的天体。 狦 expose() 函数, spawn 也返回一个可调用函数,而不是对象.

使用量

查找关于 网站数字 :

网络软件包

Threads.js工作与网络包装. 通常你要做的就是添加 threads-plugin。 。 。 .

见 用网页包构建 详情请访问网站.

调试

我们正在使用 debug 选项包以提供选入调试日志。 所有软件包的调试消息都有一个范围,首先是 threads:,带有不同的子镜:

  • threads:master:messages
  • threads:master:spawn
  • threads:master:thread-utils
  • threads:pool:${poolName || poolID}

准备吧 DEBUG=threads:* 启用所有库的调试日志。 例如,通过完全调试记录进行测试:

DEBUG=threads:* npm test

许可证

麻省理工学院

版本与发布记录

@chainsafe/threads 共发布 7 个版本,首次发布于 2022/04/12;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.11.3latest2025/09/121.2 年前
1.11.22025/05/261.5 年前
1.11.12023/07/143 年前
1.11.02023/05/243 年前
1.10.02022/05/124 年前
1.9.02022/04/124 年前

关于 @chainsafe/threads 的常见问题

@chainsafe/threads 是什么?

网络工人和工人线程如函数调用一样简单

如何安装 @chainsafe/threads?

在项目目录运行 npm install @chainsafe/threads,或使用 pnpm add / yarn add / bun add。

@chainsafe/threads 支持 TypeScript 吗?

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

@chainsafe/threads 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@chainsafe/threads 可以商用吗?

@chainsafe/threads 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chainsafe/threads 的下载量有多少?

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

@chainsafe/threads 还在维护吗?

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