私は現在、評価用のJavaScriptモジュール化アプローチを私の会社で準備しています。プロジェクトの「JavaScript ベスト プラクティス」を定義している最中です。モジュール化は中心的な問題の 1 つです。
これまでの私の調査から、2 つの主要なアプローチが明らかになりました。
それらの周りには膨大な数のローダー、プラグイン、ライブラリなどがあります。
それとは別にgoog.provide
/ goog.require
from the Google Closure Libraryもあります。
検討すべきさらなるアプローチはありますか?私が見逃した重要な/関連する仕様はありますか?
簡単に言えば、私たちの要件は次のとおりです。
- JavaScript コードを個別のファイルに構造化します。
- 関連するモジュールをランタイムにロードします。
- ...すべてのファイルをスクリプト タグとして含める必要はありません。
- JavaScript ファイルのインデックスを維持するために必要であってはなりません。
- 集約と縮小のサポート - 縮小/最適化された単一の JavaScript ファイルを構築して使用する機能。
- モジュールをさまざまな組み合わせで使用できるようにする - モジュールのさまざまなサブセットを必要とするさまざまな Web ページ/クライアントが存在することがよくあります。
- サポート ドキュメント (JSDoc 付き?)。
- テストに適しています。
- Web、クロスブラウザーに適しています。
- 妥当な IDE サポート。
可能性:
- ES6 モジュールに合わせます。
- Node.js およびモバイル プラットフォーム (PhoneGap/Cordova など) に適しています。
回答からの新しい提案:
- ecmascript-harmonyと追加のコンパイラ。
- angularjs (以下の注を参照)。
- extjs (以下の注を参照)。
補足:
- 問題は、どちらのアプローチが優れているかということではありません。
- 特定のライブラリやツールを求めているのではなく、アプローチや仕様を求めています。
- 特にオフサイトのリソースを求めているわけではありません。(これに SO タグがない場合、それを考慮するのはおそらく合理的ではありません。)
- angualjsやextjsなどのフレームワークに関するメモ。これは、この質問の枠組みにはあまり適していません。プロジェクトにフレームワーク (AngularJS であれ ExtJS であれ) が必要な場合、フレームワークはモジュール化 OOTB を提供する必要があるため、モジュール化の問題はほとんどありません。プロジェクトがフレームワークを必要としない場合、モジュール化のためにフレームワークを持ち込むのはやり過ぎです。これが、ライブラリ/ツールについて具体的に尋ねない理由の 1 つです。