本节内容来自以下链接的内容,并受 CC BY 4.0 许可证约束。
如果未明确说明,以下内容可以被认为是基于原始内容修改和删除的结果。
Web Workers 是 Rspack 的一等公民,这意味着您不需要任何加载器就可以直接使用 Web Workers。
除了 new Worker()
之外,还支持以下语法
new SharedWorker()
import { Worker } from "worker_threads"
: 通常在 Node 环境中使用navigator.serviceWorker.register()
: 用于注册 Service Workers可以使用 module.parser.javascript.worker
提供自定义语法。
例如
选择此语法是为了允许在没有捆绑器的情况下运行代码,它也适用于浏览器中的原生 ECMAScript 模块。
请注意,new Worker
也可以接受 URL 的字符串表示,但在 Rspack 中仅支持传递 URL。
Rspack 不支持在 new Worker
中使用变量。例如,以下代码将无法正常工作
这是因为 Rspack 无法静态分析语法。在 Rspack 中使用 Worker 语法时,请务必注意此限制。
目前不支持 /* webpackEntryOptions: { filename: "workers/[name].js" } */
魔法注释。
worker-loader 仅作为临时解决方案提供,以方便项目迁移到 Rspack。建议使用 new Worker()
语法。
Rspack 也支持 worker-loader。但是,由于 worker-loader 已经不再维护,请使用 worker-rspack-loader 作为替代。
使用 resolveLoader 用 worker-rspack-loader 替换 worker-loader