范围如何在 Webpack 中与 CommonJS 一起工作

How does scope work in Webpack with CommonJS

也许这不是特定于 JS 模块的 CommonJS 实现,但我的问题是关于作用域如何与导入模块一起工作。

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/window 上下文的一部分,您可以使用 global 变量

global.baz = baz;

或者更好的是,使用依赖注入来传递回调:

var foo = {
  bar(baz) {
      baz();
  }
}

然后就可以使用了:

foo.bar(baz);