RequireJSを使用しているアプリケーションのテストをいくつか書いています。アプリケーションがどのように動作するかによって、require
を呼び出していくつかのクラスを取得する予定です。だから、テストのために、いくつかのダミーのクラスがありますが、私はこのテストのためだけに個々のファイルに入れる必要はありません。ここモジュールの定義とRequireJSですぐに使用する
define('test/foo', function() {
return "foo";
});
define('test/bar', function() {
return "bar";
});
test("...", function() {
MyApp.load("test/foo"); // <-- internally, it calls require('test/foo')
});
問題は、スクリプトのonloadイベントが発射されるまで、これらのモジュールの評価が遅れているということです。私は多くがちょうどdefine()
それら手動で私のテストファイル内のそのよう好むだろう。 require.js around line 1600から
:
//Always save off evaluating the def call until the script onload handler. //This allows multiple modules to be in a file without prematurely //tracing dependencies, and allows for anonymous module support, //where the module name is not known until the script onload event //occurs. If no context, use the global queue, and get it processed //in the onscript load callback. (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);
は私が手動でキューが評価されるようにトリガすることができ、いくつかの方法はありますか?
あなたはファイルごとに複数のモジュールを追加することができます(あなたがあなたのアプリケーション全体を縮小化+最適化する際に考慮す)、あなただけに持っています各モジュールに特定の名前を付けます(OP内の各 'define'関数への最初の文字列引数を参照してください)。 – nickf
また、モジュールはテストのためのものであり、**非常に**基本的です。上記の例より少し複雑ですが、それほど多くはありません。それぞれを独自のファイルに入れることはあまりにも面倒です。 – nickf
確かに分かります。しかし、ドキュメントからわかるように、複数のモジュールを持つ単一のファイルを持つ唯一のケースは、最適化/ビルドのステップが発生した後です。正直言って、私はrequirejsに精通しているわけではありませんが、私はいくつかのプロジェクトでそれを使ってきました。ドキュメントはかなり明確です: 'ディスク上のファイルごとに1つの*モジュール定義のみがあるべきです。モジュールは、最適化ツールによって最適化されたバンドルにグループ化することができます。私はそこから始めるでしょう:) – keeganwatkins