Umbrella JS — это легковесная библиотека для работы с DOM в JavaScript, ориентированная на простоту и лаконичность. Несмотря на компактность, она построена с использованием модульной архитектуры, что позволяет изолировать функциональные блоки, облегчать поддержку кода и масштабировать приложения.
Модульная архитектура Umbrella JS реализована через объект u(), который является основной точкой взаимодействия с DOM. Каждый метод библиотеки инкапсулирует конкретную функциональность, предоставляя отдельный модуль поведения, будь то выборка элементов, манипуляции с атрибутами, события или анимации.
Модуль в Umbrella JS — это отдельный метод или группа методов, реализующая конкретное действие над набором элементов DOM. Основные модули включают:
Выборка элементов (u(selector))
Позволяет получать коллекцию элементов по CSS-селектору, NodeList,
массиву или одиночному DOM-элементу. Результат — объект Umbrella JS,
содержащий выбранные элементы и методы для дальнейших манипуляций.
let items = u('.item'); // возвращает коллекцию всех элементов с классом "item"Манипуляция классами (addClass,
removeClass, toggleClass) Отдельный
модуль для работы с классами каждого элемента в коллекции.
items.addClass('active');
items.removeClass('hidden');
items.toggleClass('selected');Атрибуты и свойства (attr,
prop) Модуль для работы с атрибутами и свойствами
элементов. Поддерживает как чтение, так и запись.
items.attr('data-id', '123'); // установка атрибута
let value = items.attr('data-id'); // получение атрибутаСобытия (on, off,
once) Модуль для привязки обработчиков событий.
Методы позволяют добавлять, удалять и использовать однократные
обработчики, сохраняя внутреннюю структуру данных о событиях каждого
элемента.
items.on('click', function() { console.log('Clicked!'); });
items.off('click');Манипуляции с DOM (append,
prepend, before, after,
remove) Позволяет добавлять или удалять элементы
относительно выбранного DOM. Каждый метод инкапсулирует операции над
коллекцией элементов, избегая дублирования кода.
u('body').append('<div class="new-item">Hello</div>');
items.remove();CSS и стили (css) Модуль для
управления стилями каждого элемента коллекции. Поддерживаются как
отдельные свойства, так и объектная форма для установки нескольких
стилей одновременно.
items.css('color', 'red');
items.css({ 'font-size': '16px', 'margin': '10px' });Изоляция ответственности Каждый модуль отвечает только за один аспект работы с DOM. Методы не пересекаются по функциональности: управление классами, атрибутами и событиями реализовано независимо.
Цепочечный вызов Методы возвращают объект Umbrella JS, что позволяет объединять несколько операций в цепочку:
u('.item')
.addClass('active')
.css('color', 'blue')
.on('click', () => console.log('Clicked'));Минимизация побочных эффектов Внутренние данные коллекции и привязки событий хранятся локально, что предотвращает непредвиденное изменение других элементов на странице.
Расширяемость Архитектура построена так, что
новые модули могут добавляться без изменения ядра библиотеки. Это
реализуется через прототип u.fn, позволяющий добавлять
пользовательские методы:
u.fn.highlight = function() {
return this.css('background-color', 'yellow');
};
u('.item').highlight();Каждый модуль Umbrella JS работает с массивоподобной коллекцией элементов, обеспечивая унифицированный доступ:
this[0],
this[1] и т.д.)each, map) для обхода
коллекцииПример итерации через модульный подход:
u('.item').each(function(el, i) {
el.textContent = `Item ${i + 1}`;
});
Модуль each действует как независимый блок, который не
зависит от других модулей, но может взаимодействовать с ними через
объект коллекции.
Модули Umbrella JS проектируются так, чтобы работать совместно, но оставаться независимыми. Например:
addClass изменяет визуальное состояние элемента,
но не затрагивает привязанные события.on привязывает обработчики событий, не изменяя
атрибуты или стили.append добавляет элементы в DOM, не влияя на
предыдущие коллекции элементов.Это позволяет строить сложные сценарии без дублирования кода и риска побочных эффектов.
u.fn, сохраняя внутреннюю целостность
библиотеки.Модульная архитектура Umbrella JS делает библиотеку удобной для масштабирования, тестирования и поддержки больших фронтенд-приложений, обеспечивая одновременно простоту синтаксиса и мощные возможности манипуляции DOM.