Node.js 如何浏览WebWorkers中使用的独立模块
我正在使用browserify创建独立的模块,我可以在node.js和浏览器的客户端中使用这些模块。我不在整个应用程序上使用browserify,只在几个单节点模块上使用 我会在全局Node.js 如何浏览WebWorkers中使用的独立模块,node.js,gruntjs,web-worker,browserify,lodash,Node.js,Gruntjs,Web Worker,Browserify,Lodash,我正在使用browserify创建独立的模块,我可以在node.js和浏览器的客户端中使用这些模块。我不在整个应用程序上使用browserify,只在几个单节点模块上使用 我会在全局var\uu下浏览填隙片,例如lodash。 除了在webworkers中使用模块外,这种方法工作得非常好 问题是: 当我将lodash填充为\uu时,浏览器系列化的代码将设置var=window.\u, 但是windows没有在web workers内部定义 我的设置 我使用grunt进行browserify,并在
var
\uu
下浏览填隙片,例如lodash
。
除了在webworkers中使用模块外,这种方法工作得非常好
问题是:
当我将lodash
填充为\uu
时,浏览器系列化的代码将设置var=window.\u
,
但是windows没有在web workers内部定义
我的设置
我使用grunt进行browserify,并在我的package.json中配置了browserify垫片
map.js:(commonJS模块,直接用于node.js)
grunfile.js:
package.json:(部分)
输出
browserify生成的输出如下所示:
注第2行:var(窗口)代码>
这是一个网络工作者的问题
我是做错了,还是应该只在正常浏览模式下工作?我知道这是一篇老文章,但我正在分享我找到的解决方案,因为我花了几个小时才找到解决方案
我设法让web workers以模块的形式运行,使用
它可以通过npm安装webworkify获得
我必须在web worker中执行的一项任务是将xml字符串解析为javascript,这是我使用xmldoc时所做的,因为xmldoc不需要DOM,web worker中也没有DOM
我在我的web worker with require中包含xmldoc,这与lodash相同。为了给出一个好的答案,您应该提供一个代码示例,说明如何使用webworkify解决问题。
var _ = require('lodash-node');
module.exports = _.map;
// Browserify
grunt.loadNpmTasks('grunt-browserify');
grunt.initConfig({
browserify: {
'map': {
options: {
bundleOptions: {
standalone: 'MapModule'
}
},
src: ['./map.js'],
dest: './output/map-module.js'
}
}
});
grunt.registerTask('default', [
'browserify'
]);
{
"name": "APP NAME",
"version": "0.0.0",
"description": "",
"main": "app.js",
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"lodash-node": "global:_"
},
}