RequireJS - moduły AMD

Moduł w RequireJS jest obiektem o określonym zakresie i nie jest dostępny w globalnej przestrzeni nazw. W związku z tym globalna przestrzeń nazw nie zostanie zanieczyszczona. Składnia RequireJS pozwala na szybsze ładowanie modułów bez martwienia się o śledzenie kolejności zależności. Na tej samej stronie możesz załadować wiele wersji tego samego modułu.

Definiowanie modułów

Moduł jest definiowany za pomocą define()funkcjonować; ta sama funkcja służy również do ładowania modułu.

Proste pary nazwa / wartość

Jeśli moduł jest tylko zbiorem par nazw i wartości, możesz użyć następującej składni -

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

Definiowanie funkcji

Moduł może również używać funkcji dla frameworków bez zależności. Można to zrobić za pomocą następującej składni -

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

Definiowanie funkcji za pomocą zależności

Jeśli moduł ma zależności, umieszczenie pierwszego argumentu (tablica nazw zależności), drugiego argumentu (funkcja definiująca) i zwracanego obiektu, który definiuje moduł, jest pokazane w następującej składni -

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

Definiowanie modułu jako funkcji

Moduł nie musi zwracać tylko obiektów, można również zwrócić każdą prawidłową wartość z funkcji. Poniższa składnia służy do definiowania modułu jako funkcji -

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

Definiowanie modułu za pomocą nazwy

W niektórych przypadkach może być konieczne dołączenie nazwy modułu jako pierwszego argumentu define(). Można to zrobić za pomocą następującej składni -

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

Ładowanie modułu