Umbrella JS строится вокруг идеи непрерывного преобразования коллекций DOM-элементов. Каждая операция возвращает новый объект Umbrella, позволяя последовательно наслаивать действия. Такой подход минимизирует использование промежуточных переменных и делает код компактнее.
Цепочка состоит из вызовов методов, каждый из которых манипулирует
текущим набором элементов или извлекает из него данные. Большинство
методов возвращают экземпляр u(), что формирует
fluent-интерфейс. Исключением являются методы, возвращающие примитивы
или специфические объекты; их применение завершает цепочку.
Начальная выборка выполняется при помощи u(selector).
Далее часто идут фильтрующие методы:
filter() — оставляет элементы,
удовлетворяющие условию.not() — исключает элементы по
селектору или функции.find() — углубляется вниз по дереву
DOM, формируя новый набор элементов.closest() — двигается вверх до первого
подходящего предка.Цепочка может выглядеть линейной, но фактически формирует последовательность уточнений над исходной коллекцией.
После уточнения коллекции следуют операции изменения:
addClass(),
removeClass(),
toggleClass() — модификация классов.attr(),
removeAttr() — управление атрибутами.html(),
text() — работа с внутренним
содержимым.data() — чтение и запись в
data-* атрибуты.Каждая операция возвращает обновлённый объект Umbrella, и цепочка продолжается без разрывов.
Вставка новых элементов происходит через:
append(),
prepend() — добавляют потомков.before(),
after() — вставляют соседние
элементы.wrap(),
unwrap() — оборачивают текущие элементы и
снимают обёртку.Отличительная особенность — одинаковая форма вызова при работе с HTML-строками, узлами и другими коллекциями Umbrella.
Подключение слушателей событий органично вписывается в цепочку:
on(type, handler) — подписывается на
событие.off(type, handler) — снимает
обработчик.trigger(type) — инициирует событие
программно.События не нарушают непрерывность, позволяя объединять логику выборки, подготовки и реакции внутри одного выражения.
Некоторые методы возвращают данные, завершая цепочку:
first(),
last() — извлекают единичный элемент.size() — число элементов.attr(),
data(),
html(),
text() при вызове без второго аргумента —
чтение значений.После такого вызова fluent-цепочка перестаёт быть доступной, и
требуется новая селекция через u() или применение методов к
возвращённому результату.
Цепочки позволяют строить выразительные конструкции, объединяя
выборку, фильтрацию, модификацию и событийну логику в одном фрагменте.
Поддерживаются вложенные вызовы u() для побочных выборок и
вставок. Важный момент — операции не мутируют исходные коллекции
Umbrella, а формируют новые.
Расширение API достигается через u.prototype. Новые
методы, корректно возвращающие this, автоматически
становятся участниками цепочек. Это даёт возможность адаптировать
библиотеку под конкретные задачи, сохраняя единый стиль
fluent-вызовов.
Несмотря на компактность, чрезмерно длинные цепочки усложняют восприятие. Практика группировки однородных операций и вынесения сложных частей в вспомогательные функции позволяет сохранить читаемость. Внутри Umbrella методы стараются избегать лишнего обхода DOM, что делает цепочки не только выразительными, но и достаточно производительными.