2012-05-11 8 views
0

同じ機能スコープでdefineとrequireの両方を使用することは可能ですか?通常はどちらかが必要ですか、定義していますが、どのようにして同じ範囲内にあるのでしょうか?RequireJS - 同じ機能スコープでdefineとrequireの両方を使用する

define(["my/cart", "my/inventory"], 
    function(cart, inventory) { 
     //Define foo/title object in here. 
    } 
); 

require(["some/module", "a.js", "b.js"], function(someModule) { 
    //This function will be called when all the dependencies 
    //listed above are loaded. Note that this function could 
    //be called before the page is loaded. 
    //This callback is optional. 
}); 
+0

通常、 'define'を明示的に呼び出さないでください。 'define'は通常そのモジュールに対する' require'呼び出しの結果として実行されます。したがって、あなたのコードの中からrequire(["foo/title"]) 'を実行すると、モジュールがロード/定義されます。 –

答えて

3

define機能はAMDのスタイルを使用して依存関係を持つモジュール「を定義」のためである、とrequireはほとんど以前define機能を定義し、これらのモジュールを呼び出すために使用されています。

ファイルごとにモジュールを1つだけ定義することをお勧めしますが、モジュールの名前をその関数の最初の引数として渡す場合は、複数のモジュールを追加できます。

あなたはrequireコール内部の巣defineできdefine関数に明示的に名前を渡しますが、requireに渡されたすべての依存関係が速くなる、直接defineに渡すことができるので、それは、意味をなさないれますネスティングが内部要求を定義するよりも明確になります。

たぶん、definerequireをネストすることは、より有用である可能性あなたが特定の条件下でのみ必要な依存関係を持つモジュールを持っている場合は、おそらく、それはdefine機能に共通の依存関係を追加することに意味を作ることができ、そしてより条件文の中にrequireという特殊なものが含まれています。

私の意見では、重要な概念は、基本的にdefineはAMDモジュールを定義するためのものであり、requireはそれらを呼び出すためのものであることを理解することです。 (AMD以外のファイルを依存関係として使用することもできますが、これは別の問題です)。

+0

私はその必要性を持っています。私はいくつかの条件に応じてモジュールをロードしたい。依存関係の注入のようなもの。しかし、私は非同期的な要求しか見つけませんでした。私が必要とするモジュールを同期的に定義する方法はありますか? require( "moduleA")のようなものですが、以前にロードされていた場合のみ動作します。 – ccsakuweb

関連する問題