gpt4 book ai didi

javascript - 我可以在 Web Worker 中使用模块吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:43 24 4
gpt4 key购买 nike

我第一次使用“新的” native importexport 功能开发了一个项目,并且我的所有模块都是这样编写的。

好吧,现在我想添加一个功能来通过 web worker 运行其中一些模块。如果不复制和更改模块(造成维护噩梦)是否可行?

例如,我知道 the importScripts functionality in web workers ,但是文档没有说明它可以很好地处理模块导出。

如果我有这样一个文件:

import // ... resources ...

function doStuff() {
// do stuff that a web worker can handle, no DOM manip, etc
}

export default doStuff;

假设它的任何组件都不能做网络 worker 不能做的事情,它能否在网络 worker 内部无缝使用?

如果没有,我可以使用 webpack 之类的东西将模块捆绑到一个 web worker 文件中吗?有一些通用的方法吗?

最佳答案

不打算自己回答这个问题,但我对此做了一些测试 webpack idea 是的,即使你不想在整个项目中使用 webpack,我也不想,你可以将它与 web worker 一起使用作为你的入口点,将所有需要的模块与 webpack 拉到一个文件中,并且使用输出文件作为网络 worker 。

我不确定 webpack 是否会输出一个 web-worker 友好的文件,但它确实如此,所以你可以使用类似这样的东西,如果你对它进行 webpack,它会完美地工作:

import testFunc from './test.js';

onmessage = function(e) {
testFunc();
console.log('Message received from main script:', e.data);
var workerResult = 'hello world';
console.log('Posting message back to main script');
postMessage(workerResult);
}

我对此进行了测试,当以网络打包形式作为网络 worker 运行时,它绝对有效。

关于javascript - 我可以在 Web Worker 中使用模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47745006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com