RequireJS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:40, 28 мая 2019.
RequireJS
Постоянный выпуск: 2.3.6 / 28 августа 2018 года
Веб-сайт https://requirejs.org/

RequireJS- это загрузчик файлов и модулей JavaScript. Он оптимизирован для использования в браузере, но может использоваться в других средах JavaScript, таких как Rhino и Node. Использование модульного загрузчика скриптов, такого как RequireJS, улучшит скорость и качество вашего кода.


Краткое введение в RequireJS

RequireJS это JavaScript-библиотека, которая помогает в «ленивой загрузке» JavaScript-зависимостей. Модули являются обычными JavaScript-файлами с некоторым количеством «синтаксического сахара» RequireJS. RequireJS реализует Asynchronous Module Definition, специфицированное в CommonJS. RequireJS предлагает простой API для создания модулей и обращения к ним. Для RequireJS требуется главный файл, содержащий базовые конфигурационные данные, такие как пути к модулям и «прокладкам». Следующий фрагмент показывает каркас файла main.js:

  require.config({
  map:{
     // Maps
  },
 paths:{
    // Алиасы и пути модулей
  },
 shim:{
   // Модули и их зависимости
 }
});

Нет нужды задавать все модули приложения в секции paths. Они могут быть загружены с использованием относительных путей. Для объявления модуля мы должны использовать блок define().

define([
 // Зависимости
], function(
 // Объекты зависимостей
){
 function myModule() {
   // Может использовать объекты зависимостей, полученные выше
 }
 return myModule;
 });

Модуль может не иметь каких-либо зависимостей. Обычно в конце модуля возвращается объект, но это не обязательно.

RequireJS с JQUERY

Так как RequireJS загружает jQuery, как и любую другую зависимость, широкое использование jQuery и обширная экосистема плагинов означают, что в вашем проекте, скорее всего, будут другие сценарии, которые также зависят от jQuery. Можно по-разному подходить к конфигурации jQuery RequireJS в зависимости от того, начинаете ли вы новый проект или адаптируете существующий код.

Справка по использованию RequireJS с JQUERY: https://requirejs.org/docs/jquery.html  (англ.)

RequireJS с DOJO

Начиная с Dojo 1.8, Dojo преобразовал свои модули в модули AMD. Однако Dojo использует некоторые плагины загрузчика, а API подключаемых модулей загрузчика все еще находятся в черновом режиме для AMD. С RequireJS можно использовать только некоторые модули из Dojo. Использовать весь Dojо будет проблематично.

Справка по использованию RequireJS с DOJO: https://requirejs.org/docs/dojo.html  (англ.)

RequireJS оптимизатор

RequireJS имеет инструмент оптимизации, который делает следующее:

  • Объединяет связанные скрипты в слои сборки и минимизирует их с помощью UglifyJS (по умолчанию) или Closure Compiler (опция при использовании Java).
  • Оптимизирует CSS путем встраивания CSS-файлов (на которые ссылается - @import), и удаления комментариев.

Оптимизатор является частью адаптера r.js для Node и Nashorn. Он создан для того, чтобы запускаться в процессе сборки или упаковки приложения.

Оптимизатор будет объединять только модули, указанные в массивах строковых литералов, которые передаются на вызовы требуют и определяют на верхнем уровне, или вызовы строковых литералов require ('name') в упрощенной оболочке CommonJS. Таким образом, он не найдет модули, загруженные через имя переменной:

 var mods = someCondition ? ['a', 'b'] : ['c', 'd'];
 require(mods);

но 'a' и 'b' будут включены, в случае если:

require(['a', 'b']);

или

define(['a', 'b'], function (a, b) {});

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

Плагины

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

Некоторые плагины также могут работать с другими загрузчиками AMD, такими как curl и backdraft, однако их совместимость не гарантируется. Для некоторых плагинов может потребоваться доступ к внутренним методам RequireJS.

Список плагинов:

  • Official Plugins  (англ.) — Официальные плагины
  • File Type  (англ.) — Плагины для работы с файлами
  • Templating  (англ.) —Плагины для работы с шаблонами
  • Unit Testing  (англ.) — Плагины для юнит-тестирования
  • Script Helpers  (англ.) — Плагины для работы со скриптами
  • Miscellaneous  (англ.) — Другие плагины

Список сайтов, использующих RequireJS

  • Adobe Brackets
  • Open-source code editor. Github Repo.
  • BBC
  • Used across entire website. Framework info.
  • BrowserQuest
  • Coursera
  • Cloud9 IDE
  • Github Repo
  • Disney Create
  • Etsy
  • Gilt
  • Hallmark
  • The Motley Fool
  • The New York Times
  • The Typing Cat
  • SoundCloud
  • USA Today
  • PsychicWorld
  • RTT
  • Backcountry
  • Webs
  • Sony Entertainment Network
  • Cloud9Trader

Список фреймворков, использующих RequireJS

  • Apache Tapestry  (англ.) , компонентная веб-инфраструктура на основе Java с открытым исходным кодом, широко использует RequireJS в своей версии 5.4 (в настоящее время в альфа-версии)
  • HearsayRequireJSBundle  (англ.) - пакет, обеспечивающий интеграцию RequireJS с Symfony2 (платформа веб-приложений на основе PHP для приложений MVC)

Ссылки