2013-08-30 11 views
24

RequireJSでは、require()Vs define()の使用の基本的な違いは何ですか?RequireJS:require()とdefine()の違い

require(['a'], function(a) { 
    // some code 
}); 

// A.js 
define(['b','c','d','e'], function() { 
    //some code 
}); 

任意のユースケースは、非常に参考になる。..早期使用で私を悩ませ

+0

http://stackoverflow.com/questions/9507606/when-to-use-require-and-when-to-use-define –

+1

を参照してください。これは重複していますが、ここでは例を挙げて説明します。 。 –

答えて

40

つのコア差はdefineと呼ばれることはありません可能性があることを考え出すました。

ファイル1つのみがdefineである限り、そのモジュールはそのファイル名で使用可能なものとして登録されます。しかし、defineモジュールは、それぞれがrequire関数が要求するとロードされます。

定義:XXXが必要な場合は、まずこれらの他のものを読み込み、この関数の結果を返します。

必須:これらの他のものをロードしてから、この機能を実行します。 (no「の場合」)

は:

// this is in company/welcomepage.js 
define(['company/ui_library'], 
    function(uiLib) { 
     console.log('Welcome to {company}!'); 
    } 
); 

それが唯一のJavascriptファイルの場合は、あなたがあなたのページを開くことができ、そして何もないでしょう:あなたは、これはあなたのページにファイルをJS含めるとしましょうコンソールのログには、スクリプトがユーザーを歓迎するように指示しています。しかし、変化のどこかのページで、または別のスクリプトであれば、あなたは次のように挿入していること:それはロード時に

require(['company/welcomepage'], function() { 
    // optionally insert some other page-initialization logic here 
}); 

さて、ページがコンソールにウェルカムメッセージを入れます。

は、実際には、代わりに、その第二のものと、手動は<script>タグとしてwelcomepage.jsを含むする必要はないであろう。それは要求を見てすぐにその場所からロードし、それが必要であることを認識します。

+1

あなたの答えはThxです...基本的な例を詳しく教えてください... – testndtv

+1

@ Katana314 ... u pls eladorate ... – testndtv

+1

@testndtv例を追加しました。それが役に立てば幸い。 – Katana314

1

あなたは常にあなたのモジュール定義にdefineを使うと思います。あなたはそうするためにいくつかの味を持っています。あなたが定義した最初の引数として配列の依存関係を持つモジュールを定義することができます(あなたが投稿した例のように)。

それともSimplified CommonJS wrapperを使用することができ、このような何か:たぶん、あなたがサービスをロードした後、(定義を指定する()を必要と使用JSONP service dependencyフォーマット、と混ざってしまった

define(function (require) { 
    var otherModule = require('otherModule'); 
    return function() { 
     return otherModule.operation(); 
    }; 
}); 

)などサービスが応答すると、最終的にモジュールを定義するJSONPコールバック。

最後に、define()を使用してモジュールを定義し、require()を使用してそれらをロードします。

10

requireおよびrequirejsは同じである。

require === requirejs // true 

requireは、定義されたモジュールをロードする方法です。例はloggerモジュールをロードするために私が行うことができます:ここで

require(["logger"], function(logger){ 
    logger.bla("S"); 
}); 

私はlogger呼ばれ、すでに定義されたモジュールを指定して、requireを呼び出し、そのblaメソッドを呼び出すことによって、それを使用しています。

defineは、モジュールを定義する方法です。私は何ができるloggerモジュールを定義する例:ここでは

// logger.js 
define(function(){ 
    return { 
    bla: function(x){ 
     alert(x); 
    } 
    } 
}); 

を私はdefineと呼ばれ、loggerモジュールを定義しました。このモジュールで私はbla私は公開したい機能を返しました。

defineはexportと非常によく似ていますが、requireは他のモジュールを使用できるように他のモジュールに依存して使用することもあります。私はここでモジュール

// logger.js 
define(["popup"], function(popup){ 
    return { 
    bla: function(x){ 
     popup.show(x); 
    } 
    } 
}); 

ロガーモジュールI definedを使用して、あなたにこの時間を同じloggerモジュールをお見せしましょう、またpopupと呼ばれる依存性を持つので、それがrequireのように見えます。

-2

は(定義)(必要)dependencies.Thereをロードするために使用両方は、これら二つの方法の主な違いです。

その非常に単純な男

)は、(必要:方法は、即時の機能を実行するために使用されます。 define():メソッドは、複数の場所で使用するためのモジュールを定義するために使用されます(再利用)。

-1

を定義し、我々はモジュールを宣言する方法であるAMDモジュールフォーマットに従って(CommonJSような他の利用可能なモジュール形式があり、ES2015System.registerUMD

反対に。

が必要です。は、 のようなモジュールローダーで利用可能です。RequireJsSystemJSノードの組み込みモジュールローダー。これは、上記のモジュール形式の1つで定義されたモジュールを使用する場合に使用されます。