JavaScript にはモジュールに対する組み込みサポートが搭載されていませんが、コミュニティからは驚くべき回避策が生まれています。モジュールを管理するために、パッケージマネージャーと呼ばれるものを使用することができます。これは、検出、インストール、依存関係管理などを処理します。
JavaScript モジュールにとっての重要な(かつ残念ながら互換性のない) 2 つの標準は次のとおりです:
この標準の一番よく使用されている具体例は Node.js モジュールです(Node.js モジュールには CJS を超えるいくつかの機能があります)。その特徴には次のようなものがあります。
この標準の最も一般的な実装は RequireJSです。その特徴には次のようなものがあります。
eval()
や静的コンパイルステップなしで動作できます話が出たパッケージマネージャーでは、 npm(Node Packaged Modules)が Node.js にとっての一般的な選択肢です。反対に ブラウザーでは、2 つのオプションがよく使用されています:
通常のウェブ開発では、RequireJS または Browserify などのモジュールシステムを使用する必要があります。ただし、単に素早くハックをまとめたい場合があります。その場合、次の単純なモジュールパターンが役立ちます:
var
moduleName
=
function
()
{
function
privateFunction
()
{
...
}
function
publicFunction
(...)
{
privateFunction
();
otherModule
.
doSomething
();
// implicit import
}
return
{
// exports
publicFunction
:
publicFunction
};
}();
前述は、グローバル変数 moduleName
に格納されるモジュールです。次を実行します
otherModule
)privateFunction
を持ちますpublicFunction
をエクスポートしますウェブページでモジュールを使用するには、 <script>
タグを使用してモジュールのファイルとその依存関係のファイルをロードするだけです
<script
src=
"modules/otherModule.js"
></script>
<script
src=
"modules/moduleName.js"
></script>
<script
type=
"text/javascript"
>
moduleName
.
publicFunction
(...);
</script>
モジュールがロードされている間、他のモジュールにアクセスされなければ (moduleName
の場合)、モジュールがロードされる順番は重要ではありません。
私のコメントとおすすめ事項を記載します。