2017-09-02 14 views
0

1. IIFEとクロージャを使用して実装されたモジュールパターンと異なるES6モジュールはありますか? 2.どちらが優先されるべきですか?例を挙げて助けてもらえますか?ES6モジュール対公開モジュールパターン

+0

[browserify/requirejsモジュールとES6モジュールの違いは何ですか?](https://stackoverflow.com/questions/28674652/what-is-the-difference-between-browserify-requirejs-modules-and) -es6-modules) –

+0

IIFEは貧しい人のモジュールです。依存関係を処理せず、相互運用のためにグローバル名前空間を汚染しません。 ESモジュールで適切な値を読み取って、IIFEにどれだけ適用できるかを見積もることができます。 – estus

答えて

0

明らかにするモジュールパターンは、基本的にES5環境で何かをモジュールのようにするために発明されたクールなトリックです。 ES6モジュールを使用できる環境にいる場合は、代わりにES6モジュールを使用する必要があります。

ES6モジュールを使用できる環境にない場合*モジュール環境のソースコードをターゲット環境で使用できる形式にコンパイルするには、ES6トランスパイラ(Babelなど)を使用する必要があります。


違いの短いリスト:

  • ES6モジュールを輸入し、
  • ES6モジュールは、輸出やあなただけの1つのクラスを公開する場合のデフォルトのエクスポートを命名した 輸出
  • (の構文を持っていますまたは何でも)。
  • ES6モジュールのインポートは、解析時に静的に解析されます。存在しないプロパティーをインポートしようとすると、エラーが発生します。
  • ES6モジュールのインポートは、割り当てではなく元の変数の「ビュー」です。 (これは、いくつかのtranspilersによってサポートされない場合があります。)

ECMAScript 6 modules: the final syntax ES6が仕事をモジュール道の本当に良い要約です。**

* 2017分の9のように、ノードはES6モジュールをサポートしていません。ブラウザーによってはサポートがありますが、主要なライブラリーではまだそれを利用していません。

** System.importが説明しているブラウザAPIは、その部分がうまく動作しなくなった方法ではありません。

関連する問題