Учебники

RequireJS — модули AMD

Модуль в RequireJS является объектом с областью действия и недоступен в глобальном пространстве имен. Следовательно, глобальное пространство имен не будет загрязнено. Синтаксис RequireJS позволяет быстрее загружать модули, не заботясь о порядке следования зависимостей. Вы можете загрузить несколько версий одного и того же модуля на одной странице.

Определение модулей

Модуль определяется с помощью функции define () ; та же функция используется и для загрузки модуля.

Простое имя / значение пары

Если модуль представляет собой просто набор пар имя-значение, вы можете использовать следующий синтаксис:

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

Определение функций

Модуль также может использовать функцию для каркасов, не имея зависимостей. Это можно сделать с помощью следующего синтаксиса —

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

Определение функций с зависимостями

Если модуль имеет зависимости, размещение первого аргумента (массива имен зависимостей), второго аргумента (определяющей функции) и возвращаемого объекта, определяющего модуль, показано в следующем синтаксисе:

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("js2/title",
   ["js1/mnc", "js1/startup"],
   
   function(mnc, startup) {
      //Define js2/title object in here.
   }
   
);

Загрузка модуля