2

私は次のようなコードを持っています

define("ModuleA", ["InitialDependency"], function (initDep){
   return {};
});


define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
   return {};
});

これらの各モジュールは、個別のファイル「ModuleA.js」、「Moduleb.js」、「InitialDependency.js」、および「OtherDependency.js」で定義されています。

これらのモジュールは、私のアプリケーションに順番にロードされます。ModuleBは常にModuleAの後にロードされます。これは、最適化の段階で、ModuleAのスクリプトをModuleBのビルドされたスクリプトに結合したくないことを意味します。次が欲しい

ModuleA.built.jsには

  • InitialDependency
  • ModuleA

ModuleB.built.jsには

  • その他の依存関係
  • ModuleB

ModuleBがロードされない可能性があるため、これらすべてを同じファイルに入れたくありません。

両方のモジュールのビルドスクリプトを実行できますが、プロジェクトにかなりの数のモジュールがあり、それらの多くを一度にビルドするビルドスクリプトが必要なため、これには時間がかかります。

これらのモジュールの両方(および同じ依存関係パターンに従うモジュール)をビルドするためのビルドスクリプトを作成するには、何を知っておく必要がありますか?

4

1 に答える 1

1

これを実現するには、modules構成オプションを試してみる必要があります。

次のようになります。

{
    modules: [
        {
            name: "ModuleA",
            include: [],
            exclude: []
        },
        {
            name: "ModuleB",
            exclude: [
                "moduleA"
            ]
        }
    ]
}

Jamesによる同様のセットアップ例がここにあります:https ://github.com/requirejs/example-multipage

もちろん、これらのモジュールを個別に構築することにより、パスを更新する必要が生じる可能性があります。もしそうなら、最良の方法はrequire.config、ビルドされたアプリの特別な設定で呼び出しを含み、通常の構成の代わりにこの構成を含むファイルを作成することです。しかし、依存関係を適切に分離して設定すれば、おそらく問題はありません。「適切に分離された」方法とmoduleAは、が基本スクリプトである場合、依存関係を詰め込むべきではないことを意味しmoduleBます-しかし、これは常識だと思います!

shimmedモジュールに関する注意:shimmed configは、ファイルがロードされ、プラグインを注文するためにr.jsによってのみ機能するため、これらが以前にロードされるかどうか100%確信が持てない場合は、依存関係のないshimモジュールを含めないでください。詳細はこちら:https ://github.com/requirejs/example-multipage-shim

この助けを願っています!

于 2012-10-11T02:08:50.673 に答える