Web Workers

Web Workers是网页内容在后台线程中运行脚本的一种简单手段。

要在 Snowpack 中使用 Web Worker。直接使用浏览器的本地Web Worker API

// Example: Load a Web Worker in your project
const myWorker = new Worker(new URL("./worker.js", import.meta.url));

建议向 Worker 构造函数传递一个URL(而不是一个字符串字面),但不是必须的。使用字符串字面意义(例如:new Worker('./worker.js'))可能会在你为生产构建网站时妨碍一些优化。

还要注意的是,传递给Worker的 URL 必须与最终的 URL 相匹配,这可能与磁盘上的路径不同。例如,即使磁盘上的原始文件是worker.ts./worker.js仍会被使用。如果需要,这里也应使用挂载目的地。

ESM Web Worker 支持

Web Worker 中的 ESM 语法(导入/导出)仍未在所有现代浏览器中得到支持。Snowpack v3.0.0 和 Snowpack Webpack v5 插件一旦发布都将支持自动打包。在此之前,你需要编写独立的、单文件的 Web Worker(没有 ESM导入/导出语句)或自己预先打包你的 Web Worker。

const worker = new Worker(new URL("./esm-worker.js", import.meta.url), {
  name: "my-worker",
  type: "module",
});