2016-01-03 3 views
5

私はES2015のエクスポート機能を学習しています。私はそれをオンラインで理解しようとしたが、私は匿名関数の内部で輸出を宣言するときに私の疑問はまだ、エラー(少なくとものIntelliJプラグイン内部の)次jshintショーES2015関数内にエクスポート

を解決されません。

E053エクスポート宣言がグローバルスコープでなければなりませんが。

逆に、JSHintは、常にAnonymous関数内でコード全体を囲むように求めます。私は次のようにコードを記述する場合:

export const MY_CONSTANT = 1000; 
(function(){ 
    'use strict'; 
    //Complete code goes here 
}(); 

を私たちは、ページの上部と下部にある多くのコードを記述する必要があります。一部のコードは、ファイルの間からページの先頭(または末尾)にジャンプします。

答えて

1

私が説明できる最良の方法は、javascript IIFEがカプセル化を作成する方法でした。あなたは、あなたのモジュールのコードを1つの中に置き、ある種のオブジェクトと戻り値を入れます。コードをインポートする必要がある場合は、引数を使用してコードをインポートします。新しいモジュール構文を使用すると、異なる方法で同じことができます。その輸入を、IIFEへの議論として、輸出を返品と考えてください。ここでは、Mozillaのインポートエクスポートの構文の完全な説明です。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

もっと見る私は、babel、gulp、browserify、およびjasmineを使用するいくつかの定型文を作成しました。 es2015。 https://github.com/jamesrhaley/es2015-babel-gulp-jasmine.git

0

ES2015モジュール構文を使用している場合は、モジュールローダーがどのコードをエクスポートするかを処理するので、匿名関数でコードをラップする必要はないでしょう。

すべてのモジュールローダーについてはわかりませんが、TypeScript + browserifyを使用すると、変数がグローバル名前空間を乱雑にしないように各ファイルがラップされます。モジュールの構文を操作する方法と、変数をグローバルに宣言できる理由については、Why must export import declarations be on top level in es2015を参照してください。

関連する問題