Javascript 我可以在web worker中使用模块吗?

Javascript 我可以在web worker中使用模块吗?,javascript,Javascript,这是我第一次使用“新的”本地import和export功能开发了一个项目,我所有的模块都是这样编写的 现在我想添加一个功能,通过web worker运行其中一些模块。在不复制和修改模块(造成维护噩梦)的情况下是否可行 例如,我知道 ,但文档中没有提到如何更好地处理模块导出 如果我有这样一个文件: import // ... resources ... function doStuff() { // do stuff that a web worker can handle, no DO

这是我第一次使用“新的”本地
import
export
功能开发了一个项目,我所有的模块都是这样编写的

现在我想添加一个功能,通过web worker运行其中一些模块。在不复制和修改模块(造成维护噩梦)的情况下是否可行

例如,我知道 ,但文档中没有提到如何更好地处理模块导出

如果我有这样一个文件:

import // ... resources ...

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

export default doStuff;
假设它的任何组件都不能做web工作人员不能做的事情,那么它能在web工作人员内部无缝利用吗


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

我没有计划自己回答这个问题,但我对这个想法做了一些测试,是的,即使你不想在整个项目中使用webpack,我不想,你也可以使用它,web worker是你的入口点,用webpack将所有需要的模块拉到一个文件中,并将输出文件用作web 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);
}

我对此进行了测试,当以web打包形式作为web工作者运行时,它绝对有效

请注意,规范计划在辅助构造函数上放置一个新的选项参数,这样您就可以判断它是否为模块辅助:不过,似乎还没有浏览器实现此功能。@kaido很高兴知道,谢谢