可以在 commonjs - webpack 1 中使用 exports 关键字吗

is it ok to use the exports keyword with commonjs - webpack 1

是否可以使用 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 并且只是因为 babel 将你的代码转换为 commonjs 才有效。

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