可以在 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,看看会发生什么会很有趣——不过我非常怀疑它会不会。
是否可以使用 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,看看会发生什么会很有趣——不过我非常怀疑它会不会。