RequireJS - AMD Module

Ein Modul in RequireJS ist ein Objekt mit Gültigkeitsbereich und im globalen Namespace nicht verfügbar. Daher wird der globale Namespace nicht verschmutzt. Mit der RequireJS-Syntax können Module schneller geladen werden, ohne sich um die Reihenfolge der Abhängigkeiten kümmern zu müssen. Sie können mehrere Versionen desselben Moduls auf derselben Seite laden.

Module definieren

Das Modul wird mit dem definiert define()Funktion; Die gleiche Funktion wird auch zum Laden des Moduls verwendet.

Einfache Name / Wert-Paare

Wenn das Modul nur eine Sammlung von Name- und Wertepaaren ist, können Sie die folgende Syntax verwenden:

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

Funktionen definieren

Ein Modul kann auch eine Funktion für Frameworks verwenden, ohne Abhängigkeiten zu haben. Dies kann mithilfe der folgenden Syntax erfolgen:

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

Funktionen mit Abhängigkeiten definieren

Wenn das Modul Abhängigkeiten aufweist, wird die Platzierung des ersten Arguments (Array von Abhängigkeitsnamen), des zweiten Arguments (Definitionsfunktion) und des Rückgabeobjekts, das das Modul definiert, in der folgenden Syntax angezeigt:

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

Modul als Funktion definieren

Es ist nicht zwingend erforderlich, dass ein Modul nur Objekte zurückgibt. Es kann auch ein gültiger Wert einer Funktion zurückgegeben werden. Die folgende Syntax wird verwendet, um ein Modul als Funktion zu definieren:

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

Ein Modul mit einem Namen definieren

In einigen Fällen müssen Sie möglicherweise einen Namen für das Modul als erstes Argument angeben define(). Dies kann mithilfe der folgenden Syntax erfolgen:

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

Laden des Moduls