2016-03-22 2 views
0

初めてモジュールに近づいていますが、私はちょっと混乱しています。モジュールシステムとモジュールフォーマットの比較

commonjs(sync)やrequirejs(AMD)のように、いくつかのモジュールシステムがあります。 ES6からは、javascriptにはcommonjsに基づいた独自のモジュールsysがあります。

は、それから私はcommonjsまたはrequirejs モジュール形式を使用して依存関係を解決すること、WebPACKのを勉強し始め、ここから私の混乱を開始します。私の知る限り理解し、これら二つのモジュールシステムです、彼らは依存関係ツリーを解決するために設計されていますそのままで;それがその目的です。

commonjs/requirejs形式(別名構文)を使用し、グラフを解決するためにwebpackを実装する意味はありますか?

答えて

0

CommonJSとAMDはどちらもランタイムモジュールシステムです。 Webpackはあなたのコードをコンパイルしているので、特にグラフを解決するために使用していないので、ソースファイルからアプリケーションのビルドを作成するために使用しています。これを実現するために、webpackは両方のタイプのモジュールを理解し、コードを分析し、依存関係を特定し、適切にバンドルし最適化することができます。

Webpackは元のモジュールシステムではサポートしていない機能をサポートしています。より動的な表現を使用して、必要なモジュールを表すことができます。解像度の動作自体をrequire拡張することができます。 require.ensure構文を使用して非同期実行時ローディングを指定できます。 Webpackの作者は、これらの追加機能をサポートするために新しいモジュールシステムを定義することができましたが、ビルドツールに対応するために既存のすべてのソース(およびサードパーティのモジュール)を書き直す必要がありました。代わりに、webpackは既に使用しているモジュールをサポートし、複雑なビルドのニーズに対応するための追加ツールを提供するのに適しています。

+0

ランタイムモジュールシステムとは、実行時に必要なモジュールだけがロードされることを意味します。 – Nemus

+0

@nemusまあ、はい。私は、CommonJSとAMDの両方が、実行時にアプリケーションコードによって使用されることを意図した仕組みであることを意味しました。 webpackとは対照的に、あなたのコードを分析して新しいものに変換しています。 –

関連する問題