Как навести порядок в зоопарке микро-фреймворков?
Я написал уже несколько обзоров о том, какие микро-фреймворки бывают, и собираюсь делать это и дальше. Однако в какой-то момент управлять этим зоопарком становится сложно. На помощь приходит библиотека Ender. Хотя постойте, это вовсе не библиотека, по крайней мере в том смысле, к которому вы привыкли. Это скорее инструмент для создания собственного фреймворка из других библиотек.
Авторы, Dustin Diaz (ded) и Jacob Thornton (fat) гордо именуют свое творчество как "The no-library library", и что-то в этом названии есть.
Чтобы начать работать с Ender, его нужно установить через npm:
npm install ender -g
Теперь у нас появляется возможность работать с Ender через командную строку, вкратце его API:
- add
- remove
- build
- compile
- refresh
- search
- info
- help
Подробное описание каждого метода можно почитать на сайте.
Например, чтобы сделать свою собственную сборку из Undescore.js, Qwery и Reqwest нужно будет выполнить build
команду:
ender build reqwest qwery underscore
Мы получаем собранную версию ender.js
, сжатую версию ender.min.js
и директорию node_modules
(если она еще не создана) со всеми нужными npm модулями.
Самое приятное, что теперь можно не думать в какой последовательности подключать микро-фреймворки, не думать о зависимостях, можно забыть об обновлениях каждой библиотеки, легко добавлять и удалять отдельные микро-фреймворки.
Это все хорошо, но что мы получаем на клиентской стороне?
Если бы мы просто объединили все микро-фреймворки в один файл, Ender бы ничем не отличался от других компановщиков. Однако, Ender, и здесь пошел дальше — он пытается все методы микро-фреймворков завернуть через себя и использовать напрямую у элементов. То есть, по сути, синтаксис jQuery:
// Описываем дополнительный метод
$.ender({
rand: function() {
return this[Math.floor(Math.random() * this.length)];
}
}, true);
// Применяем его
$('p').rand();
Определенно вам понравится работать с Ender, он небольшой по размеру и несет в себе хороший функционал для упрощения работы с микро-фреймворками.