范围如何在Webpack中使用CommonJS

时间:2018-05-11 17:59:55

标签: javascript webpack 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,但似乎模块范围完全是孤立的。那是对的吗?在我尝试做的事情中,有没有办法或最佳做法?

1 个答案:

答案 0 :(得分:1)

与webpack无关。

javascript模块只有本地上下文

如果您希望某些内容成为全局/窗口上下文的一部分,则可以使用global变量

global.baz = baz;

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

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

然后可以使用它:

foo.bar(baz);