2017-10-27 18 views
0
  1. 現在、すべてのモジュールロード定義の間に勝者がありますか? CommonJS、AMD、UMD、ES6。そして、モジュールローダーについては、どうすればいいのですか?
  2. ng4のAngular-Cliは、SystemJSモジュールローダーを使用しますか?
+0

angleは 'webpack'をデフォルトの' module loader/bundler'として使用しています。 – Orlandster

+0

@オルランドスター、モジュールバンドラ、ローダではありません。要求に応じてモジュールをロードすることはできません –

答えて

1

JavaScriptを書いているなら、間違いなくES6モジュール(ESM)を使うべきだと思います。しかし、ブラウザではESMが今実装されている方法にいくつかの制限があるため、Chromeでサポートされているダイナミックインポートと名前付きモジュールAFAIKは仕様にさえありません。モジュールローダーを使用する必要があります。私は必要に応じてモジュールをロードするためにSystemJSを使用しています。残念なことに、ESMもサポートしていないため、まずSystemJSがサポートするフォーマットのいずれかに変換する必要があります。 CommonJSはNodeJSで使用されているのと同じフォーマットであり、私にはもっとよく知られているので、CommonJSを選択します。変換はTypeScriptで行うのが便利です。上記の制限を含むブラウザによるESMのサポートが完全に終わると、ほとんどのプロジェクトでSystemJSの依存関係が削除されます。

しかし、ほとんどのフロントアプリケーションでは、モジュールバンドラWebpackが使用されています。これはESMモジュールを(CommonJSに基づいた)独自のモジュールフォーマットに変換します。したがって、通常は別個のモジュールローダーは必要ありません。しかし、Webpackはビルド時にわからないモジュールをロードできないため、実行時に動的なサードパーティモジュールをロードする必要がある場合は、SystemJSを使用します。それは私が取り組んでいるアプリケーションの場合です。

+0

「実行時にロードされる動的サードパーティモジュール」は、Webpackが動的に認識できないモジュールをロードできないことを意味しますが、SystemJSでは実行できません。これは、AMD/RequireJSがうまくいくものでもありますか?動的モジュールの読み込みですか? – Hao

+0

@Hao、そうですね、どちらも可能ですが、SystemJSは今のところ望ましい解決策です –

関連する問題