2016-10-23 4 views
0

exportsキーワードを使用して、モジュール内のエクスポートされた値にアクセスできますか? (それはes6モジュール仕様の一部ですか?) webpackとbabel/commonjsモジュールでうまく動作しているようですが、exportsキーワードにはエクスポートされたすべてのメソッドへの参照が含まれています。commonjs-webpackでexportsキーワードを使用しても問題ありません1

しかし、私の懸念は、これは有効ではない可能性があり、おそらくこれはバベル/コモンズ環境であるため可能です。

bindMethodsメソッドは、明示的に宣言することなく、このモジュールのすべてのメソッドに動的にアクセスできるため、実際にどのエクスポートが使用されているかを判断することは不可能なので、これがツリーシェイキングにどのように影響するかはわかりません。名前。

例:

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

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

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

'exportsはES6モジュールとは関係ありません。これは、ES6がBabelを介してCJSモジュールでES5にコンパイルされているためです。上記のコードは、ネイティブES6モジュールが到着すると動作しません。 – estus

答えて

1

バベルがcommonjsにコードをtranspilesので、それが有効でES6ではないとだけ働いているようにはい、あなたはexportsを使用して言って右だろう。

Webpack 1はツリーシェイクをサポートしていないので、そこに問題を起こしてはいけません。 transform-es2015-modules-commonjsを無効にしてWebpack 2を使用して、効果ツリーが揺れていないかどうかを確認することは興味深いでしょう。

関連する問題