Учебники

RequireJS — CommonJS

Формат модуля определяется CommonJS. Он определяется без предоставления одинаковой опции браузеров для других сред JavaScript. Поэтому в спецификации CommonJS рекомендуются транспортные форматы и асинхронные требования . Вы можете легко преобразовать традиционный формат модуля CommonJS для работы с RequireJS. Но все модули не будут преобразованы в новый формат. Некоторые из исключений перечислены ниже —

  • Модули с условным кодом для вызова по требованию.
  • Модули с круговыми зависимостями.

Ручное преобразование

Модули CommonJS можно преобразовать вручную в формат RequireJS, используя следующий синтаксис:

define(function(require, exports, module) {
   //place CommonJS module content here
});

Инструмент преобразования

Модули CommonJS можно преобразовать в формат RequireJS с помощью средства преобразования проекта r.js , встроенного в файл r.js. Вы должны указать путь к файлу, который нужно преобразовать, и выходную папку, как показано ниже —

node r.js -convert path/to/commonjs/modules/ path/to/output

Установка экспортируемого значения

Некоторые системы в CommonJS позволяют устанавливать экспортируемое значение, назначая экспортируемое значение как module.exports. Но RequireJS поддерживает более простой способ возврата значения из функции, переданной для определения. Преимущество этого в том, что вам не нужны аргументы export и функции модуля, поэтому вы можете оставить их вне определения модуля, как показано ниже —

define(function (require) {
   var name = require('name');

   //Define the module as exporting a function
   return function () {
      name.doSomething();
   };
});

Альтернативный синтаксис

Альтернативный способ указать зависимости — через аргумент массива зависимостей define () . Но порядок имен в массиве зависимостей должен соответствовать порядку аргументов, передаваемых функции определения define (), как показано ниже —

define(['name'], function (name) {
   
   return function () {
      name.doSomething();
   };
});

Загрузка модулей из пакетов CommonJS

Чтобы узнать о местоположении и атрибутах пакетов, модули загружаются в пакеты CommonJS с помощью RequireJS путем настройки конфигурации RequireJS.

Инструмент оптимизации

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