【问题标题】:is it ok to use the exports keyword with commonjs - webpack 1可以将exports关键字与commonjs - webpack 1一起使用吗
【发布时间】:2017-03-05 15:37:48
【问题描述】:

是否可以使用 exports 关键字访问导出的值,在它自己的模块内部? (它是 es6 模块规范的一部分吗?) 它似乎与 webpack 和 babel / commonjs 模块一起工作正常,exports 关键字包含对所有导出方法的引用。

但我担心这可能无效,也许这只是可能的,因为它是 babel / commonjs 环境。

我也不确定这会如何影响 tree-shaking,因为现在无法确定实际使用了哪些导出,因为 bindMethods 方法可以动态访问此模块中的所有方法,而无需声明明确的名称。

例子:

import bindMethods from 'module';
var binder = bindMethods(exports);

export function foo(value){
  binder(value).bar();
}

export function bar(value){
  binder(value).foo();
}

【问题讨论】:

  • exports 与 ES6 模块无关。这仅是因为 ES6 通过 Babel 使用 CJS 模块编译为 ES5。上面的代码在原生 ES6 模块到达时将无法使用。

标签: ecmascript-6 webpack babeljs commonjs es6-modules


【解决方案1】:

是的,你说得对,像这样使用 exports 不是有效的 es6 并且只是因为 babel 将你的代码转换为 commonjs 才有效。

Webpack 1 不支持 tree-shaking,所以它不会导致任何问题。如果您禁用 transform-es2015-modules-commonjs 并使用 Webpack 2 来查看它是否会影响摇树摇晃,看看会发生什么会很有趣——不过我非常怀疑它会发生什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2022-12-16
    • 2017-09-28
    • 2012-03-02
    相关资源
    最近更新 更多