Так сложилось, что в большинстве своих проектов я использую Require.js.
Более того, часто я пытаюсь поставить на путь истинный окружающих меня людей, всячески подталкивая их к использованию этой библиотеки.
Именно поэтому я очень часто сталкиваюсь с мифами, которые каждый раз приходится разрушать для каждого собеседника:
- Из-за динамической подгрузки зависимостей (скриптов), и как следствие, огромного количества HTTP запросов, приложение с Require.js очень медленно запускается.
- Работа самой библиотеки требует слишком много памяти. В результате — приложение без Require.js будет работать намного быстрее.
- Описывать модули очень неудобно, наличие необходимости писать избыточный и непонятный код.
Миф #1
Это самое распространенное заблуждение. Динамическую подгрузку зависимостей можно и нужно использовать во время разработки. На продакшне же, все это добро будет собрано в один js файл с помощью r.js и минифицировано с помощью uglify.js или ему подобным.
Миф #2
Работа requirejs на продакшне (без необходимости загружать зависимости дополнительными запросами) будет вовсе неощутимой.
Миф #3
Не нужно также забывать за возможность замены такого синтаксиса:
define(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC) {
// use moduleA, moduleB and moduleC here
return {
// new module here
};
});
таким:
define(function (require) {
var moduleA = require('moduleA'),
moduleB = require('moduleB'),
moduleC = require('moduleC');
// use moduleA, moduleB and moduleC here
return {
// new module here
};
});
Черновик этого поста создавался очень давно, до нынешней популярности Node.js. Но теперь использование синтаксиса require.js в JavaScript, похоже, стало более привычным.
Думаю, многие уже давно для удобства завели себе сниппеты для использования конструкция require.js, что делает возможным в 2-3 клавиши создавать такие модули.
Бонусы от require.js
- Packages
- Подгрузка темплейтов с помощью плагинов (напр. text)
- Удобное управление версиями библиотек/кода
- Множество полезных плагинов, таких как i18n
Автор: Leestex