Формат модуля определяется 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 имеется инструмент оптимизации, который может объединять определения модулей в оптимизированные пакеты для доставки в браузер. Он работает как инструмент командной строки, так что вы можете использовать его как часть развертывания кода.