Umbrella JS — это лёгкая библиотека для работы с DOM в JavaScript, ориентированная на простоту и компактность кода. Основной принцип работы Umbrella JS заключается в предоставлении удобного API для выборки элементов, манипуляций с ними и обработки событий, сохраняя синтаксис максимально лаконичным.
Выборка элементов выполняется через функцию u(). Она
принимает строку CSS-селектора, элемент DOM или коллекцию элементов:
// Выборка по CSS-селектору
var items = u('.item');
// Выборка по id
var main = u('#main');
// Передача DOM-элемента
var container = u(document.querySelector('.container'));
Ключевой особенностью является то, что u() всегда
возвращает Umbrella-коллекцию, которая поддерживает
методы библиотеки, независимо от количества найденных элементов. Даже
если элемент один, результат оборачивается в коллекцию.
Можно ограничить область поиска элементов, передав второй аргумент в
u() — контекст. Контекстом может быть
DOM-элемент или другая Umbrella-коллекция:
// Поиск элементов внутри контейнера
var container = u('.container');
var buttons = u('button', container);
В этом примере поиск button будет выполнен только среди
потомков элементов с классом container. Контекст задаёт
ограниченную область, что повышает производительность
при работе с большими DOM-структурами.
Umbrella JS позволяет использовать массивы или коллекции в качестве контекста, что удобно при работе с несколькими родителями:
var sections = u('.section');
var links = u('a', sections);
Все ссылки внутри каждой секции попадут в результирующую Umbrella-коллекцию. При этом порядок элементов сохраняется по мере обхода DOM.
Для уточнения выборки можно использовать методы
.filter() и .not(). Они принимают селектор или
функцию, возвращающую логическое значение:
var items = u('.item').filter('.active');
var inactive = u('.item').not('.active');
Фильтрация работает внутри уже выбранной коллекции, что делает код более выразительным и модульным.
Umbrella JS поддерживает методы для перемещения по DOM относительно выбранных элементов:
.find(selector) — поиск потомков внутри коллекции..children(selector) — непосредственные дочерние
элементы..parent(selector) — родительский элемент..closest(selector) — ближайший предок, подходящий под
селектор.Примеры:
// Поиск всех ссылок внутри активного блока
var links = u('.block.active').find('a');
// Получение всех дочерних элементов списка
var children = u('#list').children();
Методы возвращают Umbrella-коллекцию, что позволяет продолжать цепочку вызовов.
В отличие от стандартного querySelectorAll, контекст
может быть динамическим, что позволяет работать с элементами,
добавленными после инициализации:
var container = u('#dynamic-container');
// Через некоторое время появились новые элементы
setTimeout(function() {
var buttons = u('button', container);
buttons.addClass('highlighted');
}, 1000);
Umbrella JS всегда делает выборку в реальном времени относительно указанного контекста.
Umbrella JS по принципу работы с контекстом похож на jQuery, но
обладает меньшим размером и более компактным API. Методы
.find(), .filter(), .not(),
.children() работают аналогично, но библиотека избегает
лишних обёрток и сложных цепочек, что повышает читаемость кода.
u('.container')
.find('.item')
.filter('.active')
.addClass('highlighted');
u(selector, context) — базовая выборка..find(), .children(),
.parent(), .closest() — навигация по DOM..filter() и .not() — уточнение
коллекции.Эта система контекстной выборки делает Umbrella JS удобным инструментом для работы с DOM, сохраняя код компактным, предсказуемым и легко расширяемым.