1

複数のモジュール/ファイルで構成されるライブラリを作成しています。ファイルの 1 つ (メインと呼びましょう) は他のすべてのファイルに依存するため、ユーザーがこのファイルをロードすると、ライブラリ全体がロードされます。

これで、ユーザーはすべてのライブラリをサブフォルダー (subdir1 と呼びましょう) に配置できるため、requirejs を次のように構成します。

require.config({
    paths: {
        "jquery": "Scripts/jquery-2.0.3.min",
        "knockout": "Scripts/knockout-2.3.0",
        "MyLib.Main": "subdir1/MyLib.Main"
    }
});

このシナリオでは、subdir1/MyLib.Main.js ファイルは問題なくロードされますが、このファイルが MyLib.Helper モジュールに依存している場合、requirejs は subdir1/MyLib.Helper.js ファイルではなく、MyLib.Helper.js からロードしようとします。それがどこにあるか。

サブディレクトリ1からサブモジュールをロードするようにrequirejsに指示する方法はありますか? config でこれらすべてのモジュールを列挙できることはわかっていますが、それにはエンドユーザーがライブラリの内部構造を知る必要があります (これは受け入れられません)。理想的には、MyLib.Main.js ファイル内の subdir1 からロードする必要があるすべてのモジュールを何らかの方法で列挙できるようにする必要があります (ただし、この時点で、それが subdir1 になることをハードコーディングできないことに注意してください)。

4

1 に答える 1

1

ユーザーにrequire configでLIBNAME_PATH変数を設定するように依頼してから、このパス変数を使用してすべてのパスにプレフィックスを付けます

例:

require.config({
    paths: {
        "jquery": "Scripts/jquery-2.0.3.min",
        "knockout": "Scripts/knockout-2.3.0",
        "MyLib_PATH": "subdir1",
        "MyLib.Main": "subdir1/MyLib.Main"
    }
});

ではsubdir1/MyLib.Main、次のようになります。

require.config({
    paths: {
        "MyLib.Helper": "MyLib_PATH/MyLib.Helper"  
    }
});

次に、requirejs はMyLib_PATH、ユーザーが構成した正しいパスに解決する必要があります。

これは非常にテストされていないドラフトですが、うまくいくはずです。これは、ライブラリのLIBNAME_PATH どこでもこれを使用する必要があることを意味します。

于 2013-08-26T13:47:16.763 に答える