RequireJS-AMDモジュール

RequireJSのモジュールはスコープオブジェクトであり、グローバル名前空間では使用できません。したがって、グローバル名前空間は汚染されません。RequireJS構文を使用すると、依存関係の順序を追跡する必要がなく、モジュールをより高速にロードできます。同じページに同じモジュールの複数のバージョンをロードできます。

モジュールの定義

モジュールは、を使用して定義されます define()関数; 同じ関数がモジュールのロードにも使用されます。

単純な名前と値のペア

モジュールが名前と値のペアの単なるコレクションである場合は、次の構文を使用できます-

define({
   state: "karnataka",
   city: "bangalore"
});

関数の定義

モジュールは、依存関係がなくても、フレームワークの関数を使用できます。これは、次の構文を使用して実行できます-

define(function () {
   
   //Do setup work here
   return {
      state: "karnataka",
      city: "bangalore"
   }
});

依存関係のある関数の定義

モジュールに依存関係がある場合、最初の引数(依存関係名の配列)、2番目の引数(関数の定義)、およびモジュールを定義する戻りオブジェクトの配置は、次の構文で示されます。

define(["./mnc", "./startup"], 
   function(mnc, startup) {
        
      return {
         state: "karnataka",
         city: "bangalore",
      
         addCompany: function() {
            mnc.decrement(this);
            startup.add(this);
         }
      
      }
   }
);

モジュールを関数として定義する

モジュールがオブジェクトのみを返すことは必須ではありません。関数からの有効な値も返すことができます。次の構文は、モジュールを関数として定義するために使用されます-

define(["./mnc", "./startup"],
   function(mnc, startup) {
       
      return function(title) {
         return title ? (window.title = title) :
         startup.storeName + ' ' + mnc.name;
      }
      
   }
);

名前を使用したモジュールの定義

場合によっては、最初の引数としてモジュールの名前を含める必要があります。 define()。これは、次の構文を使用して実行できます-

define("js2/title",
   ["js1/mnc", "js1/startup"],
   
   function(mnc, startup) {
      //Define js2/title object in here.
   }
   
);

モジュールのロード