【问题标题】:How does scope work in Webpack with CommonJS范围如何在 Webpack 中与 CommonJS 一起工作
【发布时间】:2018-05-11 17:59:54
【问题描述】:

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

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,但似乎模块范围是完全隔离的。那是对的吗?我正在尝试做的事情有什么方法或最佳实践吗?

【问题讨论】:

    标签: javascript webpack commonjs


    【解决方案1】:

    与 webpack 无关。

    javascript 模块只有本地上下文

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

    global.baz = baz;
    

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

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

    然后就可以使用了:

    foo.bar(baz);
    

    【讨论】:

    • 我认为它可能与 webpack 没有任何关系,但我认为为了安全起见我会包含它。依赖注入肯定是要走的路,感谢您的帮助:)。
    • 乐于助人 :-)
    猜你喜欢
    • 2018-03-24
    • 2019-11-04
    • 1970-01-01
    • 2018-11-03
    • 2018-04-09
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多