也许这不是特定于JS模块的CommonJS实现,但我的问题是关于scope如何与导入模块一起工作。
CommonnJS: foo.js
var foo = {
bar() {
baz();
}
}
module.exports = foo;
主 JS
const foo = require('./foo.js');
function baz() {
console.log('this is baz');
}
foo.bar();
//-> ReferenceError: baz is not defined
通常我希望找到baz,但似乎模块范围是完全隔离的。这是对的吗?在我尝试做的事情中,有没有办法或最佳实践?
与 webpack 无关。
JavaScript 模块只有本地上下文
如果您希望某些内容成为全局/窗口上下文的一部分,则可以使用global
变量
global.baz = baz;
或者更好的是,使用依赖注入来传递回调:
var foo = {
bar(baz) {
baz();
}
}
然后可以使用它:
foo.bar(baz);