私は最後の数日間requirejsで遊んでいます。定義と必要の違いを理解しようとしています。require()とdefine()をいつ使うべきですか?
定義すると、モジュールの分離が可能になり、依存関係の順序付けが遵守されるように見えます。しかし、それは、それが始まる必要があるすべてのファイルをダウンロードします。あなたが必要なときに必要なものだけを必要としながら、それを必要とします。
これらの2つを一緒に使用することはできますか?どのような目的で使用する必要がありますか?
私は最後の数日間requirejsで遊んでいます。定義と必要の違いを理解しようとしています。require()とdefine()をいつ使うべきですか?
定義すると、モジュールの分離が可能になり、依存関係の順序付けが遵守されるように見えます。しかし、それは、それが始まる必要があるすべてのファイルをダウンロードします。あなたが必要なときに必要なものだけを必要としながら、それを必要とします。
これらの2つを一緒に使用することはできますか?どのような目的で使用する必要がありますか?
define
でrequire.jsにモジュールを登録すると、他のモジュール定義やrequire文に依存することができます。 require
では、require.jsでロードできるモジュールまたはjavascriptファイルをロード/使用するだけです。例について は、親指のdocumentation
マイルールを見てみましょう:
を定義します。あなたはあなたのアプリケーションのモジュールの他の部分を宣言したい場合に依存します。
必須:必要なものだけを読み込んで使用したい場合。
require.jsからsource code(ライン1902):
/**
* The function that handles definitions of modules. Differs from
* require() in that a string for the module should be the first argument,
* and the function to execute after dependencies are loaded should
* return a value to define the module corresponding to the first argument's
* name.
*/
define()
関数は2つのオプションのパラメータ(モジュールIDおよび必要なモジュールの配列を表す文字列)を受け付けると1つの必須パラメータ(ファクトリメソッド)。
は、(Module Patternと同じ方法で)モジュールの実装を返します。
require()
関数は、新しいモジュールの実装を返す必要はありません。あなたは「パラメータとして私は渡してい関数を実行し、私が渡したが、前に、これらの依存関係がロードされていることを確認していますIDに戻り、何でも割り当てる」をのようなものを求めているdefine()
を使用して
。あなたは「私は次の依存関係を持って渡す機能は、これらの依存関係は、それを実行する前にロードされていることを確認し、」のようなものを言っているのrequire()
を使用して
。あなたが定義したモジュールを使用する場所
require()
機能はモジュールが定義されていることを確認するためには、ですが、そこに新しいモジュールを定義していません。
モジュール定義 を容易にする方法「を定義」と 依存ローディング
を処理する方法を「必要とする」は、以下のシグネチャを使用して、提案に基づいて、名前付きまたは名前のモジュールを定義するために使用される定義:
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
requireは、通常、依存関係を動的に取得したい場合は、トップレベルのJavaScriptファイルまたはモジュール内のコードをロードするために使用されます。
詳細については、https://addyosmani.com/writing-modular-js/を参照してください。
依存関係を読み込むためにrequire()とdefine()の両方が使用されています。これら2つのメソッドには大きな違いがあります。
その非常にシンプルGuysは
は()を必要とします。方法は、即時機能を実行するために使用されます。 define():メソッドは、複数の場所で使用するためのモジュールを定義するために使用されます(再利用)。
requireが定義されたモジュール内で使用されるのか、その外側で使用されるのかに違いはありますか?モジュール内で使用されている場合は、requireを使用するのではなく、モジュール定義に要件を設定するだけです。 – Petri
この回答が私がここで読んだ内容と大きく異なる理由http://requirejs.org/docs/api.html#deffunc ?? –
@Petriは、モジュールを非同期にロードするRequireJSのバージョン2の動作を見ているようです。 requireJS 2.0は要求した 'require([])'呼び出しやそれに依存するものがあるまで、モジュールのファクトリ関数( 'define()'に渡される関数)を実行しません。 https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#delayed – alxndr