6

最適化された RequireJS/r.js バンドル内から個々のモジュールをインポートすることは可能ですか?

「MyLibrary」と「MyApplication」の 2 つのコンポーネントに分割された JavaScript プロジェクトがあります。

MyLibrary は、'MyModule1' と 'MyModule2' の 2 つの個別のモジュールで構成されています。

開発モードでは、RequireJS と通常の define(['MyLibrary/MyModule1'],function(){}) 構文を MyApplication から使用して、これらの各モジュールをインポートできます。

ただし、r.js を介して MyLibrary を実行すると、これはもはや可能ではないようです。内部モジュールを直接参照する方法はもうないようです。

コンパイル/最適化されたソースから、各モジュールに define() ブロックがあることがわかりますが、マイ アプリケーション内の RequireJS はこれらを直接参照できないようです。

これは可能ですか、またはこれを機能させるには、アプリケーション全体を単一のファイルにバンドルする必要がありますか?

編集: RequireJS 最適化フェーズは Play フレームワークで行われており、ビルド構成を最小限に制御できます。

({appDir: "javascripts",
[info]           baseUrl: ".",
[info]           dir:"javascripts-min", mainConfigFile: "javascripts/build.js", modules:         [{name: "main"}]})
4

1 に答える 1

3

ライブラリのモジュールを使用するには、このモジュールを見つける方法を RequireJS に指示する必要があります。main.js には、次のようなものが必要です。

  require.config({
      // ...
      paths: {
          // ...
          'MyLibraryBundleName': 'dist/MyLibraryFile',
          // ...
      },
      // ...
      bundles: {
          //...
          'MyLibraryBundleName': ['MyLibrary/MyModule1', 'MyLibrary/MyModule2'],
          //...
      }
  });

MyApplication が次のようなモジュールを参照している場合:

define(['MyLibrary/MyModule1'],function(){})

...あなたが言及したように、RequireJSは「MyLibrary/MyModule1」を探し、それを「バンドル」セクションに見つけ、その後「パス」セクションをチェックして、ロードされる実際のファイル「dist/MyLibraryFile」を見つけます.

于 2015-07-18T09:00:30.000 に答える