Модуль в 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. } );