2013-07-29 7 views
5

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

Iは、2つの別々のコンポーネントに分割するJavaScriptプロジェクトを持っている - 'てMyLibrary' と 'MyApplicationを'

てMyLibraryは、2つの別個のモジュール、 'MyModule1' と 'MyModule2' から成ります。

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

しかし、一度MyLibraryからr.jsを実行すると、これはもはや可能ではありません。内部モジュールを直接参照する方法はありません。

モジュールごとにdefine()ブロックがあることがわかりましたが、My Application内のRequireJSはこれらを直接参照できないようです。

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

編集:RequireJS最適化フェーズがPlayフレームワークで実行されており、ビルド設定を最小限に抑えることができます。

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

r.jsビルド設定とその他の関連コードを投稿できますか? – explunit

+0

ビルドファイルは、私が使用しているフレームワーク(Play 2.1)によってオンザフライで生成され、それほど多くはありません。私はとにかくそれを追加します。 –

答えて

2

ライブラリからモジュールを使用するには、このモジュールの検索方法をRequireJSに指示する必要があります。 MyApplicationをこのようにモジュールを参照している場合は

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

:あなたはこのような何かを持っている必要がありmain.jsで

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

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

関連する問題