サブモジュールをより大きなプロジェクトに構成するためのベスト プラクティスのアドバイスが欲しいです。開発モードでは、require がすべての deps をオンザフライで解決するため、問題なく動作しますが、GWT アプリ用に作成する必要があるため、コールバックを介して非同期のものを消費することが明らかに困難になっています。
構造は次のとおりです (これは個別にうまくビルドされ、必要に応じてファイルが作成されます)。
- main (すべての共有ライブラリ リソースなどをビルドします)
- コンポーネント A (メインが存在する必要がありますが、独自のビルドでは除外されます)
- ... コンポーネント N
次のように読み込まれるアプリで使用するには:
<script src='require.js'></script>
<script src='main-lib-min.js'></script>
<script src='component-a-min.js'></script>
<script src='component-n-min.js'></script>
<!-- client to all these files is a single app to kick off: -->
<script src='app.js'></script>
main は require wrap として定義され、完了時にイベントを発生させます。define()
コンポーネントはラップ内のモジュールのコレクションです。
問題は、app.js
すべての参照が解決されるまで何も参照してはならないということです。のcomponent-A
エクスポートへの参照が含まれている可能性があるmain-lib
ため、前のスクリプトがロードされる前に評価されるべきではありません。
Chrome では、並列ダウンロードと参照エラーが発生しています。代わりにブロックする必要があります。ビルドではすべてが事前にパッケージ化されているr.js
ため、ファクトリはその上で定義されたモジュールを返すことができるはずです。
すなわち:
var foo = require('foo');
大丈夫なはずです。
app.js が次のように作成されている場合:
require(['foo'], function(foo){
});
それは動作します。
この種のコンポーネント ビルド/モジュール パターンを作成した経験のある人はいますか? modules: []
お互いに待機するように、main-lib ビルド構成からすべてのモジュールを含めますか? モジュールを追加する側をクライアント (つまり、html ファイル) にしたい場合はどうすればよいでしょうか?
ロードを変更しますか?同期のような動作を確実にするために、より適切な GWT ローダーはありますか? パフォーマンスは問題ではありません。