【发布时间】: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