Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用CommonJS的Webpack中的作用域是如何工作的_Javascript_Webpack_Commonjs - Fatal编程技术网

Javascript 使用CommonJS的Webpack中的作用域是如何工作的

Javascript 使用CommonJS的Webpack中的作用域是如何工作的,javascript,webpack,commonjs,Javascript,Webpack,Commonjs,也许这并不特定于JS模块的CommonJS实现,但我的问题是scope如何导入模块 commonjs: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

也许这并不特定于JS模块的CommonJS实现,但我的问题是scope如何导入模块

commonjs: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);

我想它可能与webpack无关,但为了安全起见,我想我应该把它包括进去。依赖注入似乎绝对是一种方式,谢谢你的帮助:)。很高兴帮助:-)