Umbrella JS — лёгкая и компактная библиотека для работы с DOM, предоставляющая удобный API, схожий с jQuery, но без лишнего веса. Для проектов на современных сборщиках, таких как Webpack, интеграция Umbrella JS требует понимания работы с модулями и конфигурацией сборщика.
Установка через npm
npm install @umbraco/umbrella --save
После установки библиотеку можно импортировать в код проекта как модуль ES6:
import u from '@umbraco/umbrella';
Если используется CommonJS-синтаксис, доступен вариант:
const u = require('@umbraco/umbrella');
Настройка Webpack для работы с библиотекой
Umbrella JS является модулем ES, поэтому важно убедиться, что Webpack
поддерживает обработку ES6. В стандартной конфигурации достаточно
настроить babel-loader для трансляции кода:
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: __dirname + '/dist',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
};
Эта конфигурация позволяет использовать Umbrella JS вместе с современными возможностями JavaScript без проблем совместимости.
Umbrella JS использует универсальный селектор
u(selector), который возвращает объект-обёртку для
выбранных элементов. Это позволяет применять методы коллекции к
множеству элементов одновременно.
Примеры базовых операций:
const items = u('.item'); // возвращает коллекцию элементов с классом .item
items.text('Новый текст'); // изменяет текст всех выбранных элементов
items.html('<span>HTML контент</span>'); // вставка HTML
items.attr('data-id', '123'); // установка атрибута
console.log(items.attr('data-id')); // получение атрибута первого элемента
items.removeAttr('data-id'); // удаление атрибута
items.addClass('active');
items.removeClass('hidden');
items.toggleClass('highlight');
items.on('click', function(event) {
console.log('Элемент кликнут', event.target);
});
items.off('click'); // удаление обработчика
const newDiv = u('<div class="new">Новый элемент</div>');
u('body').append(newDiv); // добавление элемента в конец body
u('body').prepend(newDiv); // добавление элемента в начало body
newDiv.remove(); // удаление элемента
Umbrella JS позволяет работать не с отдельными элементами, а с коллекциями сразу. Методы поддерживают цепочку вызовов:
u('.item')
.addClass('highlight')
.attr('data-active', 'true')
.on('mouseenter', function() {
u(this).addClass('hovered');
});
Каждый метод возвращает объект-обёртку Umbrella, что позволяет выстраивать сложные операции без создания промежуточных переменных.
Umbrella JS предоставляет встроенный метод ajax для
выполнения HTTP-запросов. Поддерживаются методы GET, POST и другие:
u.ajax({
url: '/api/data',
method: 'GET',
success: function(response) {
console.log('Данные получены', response);
},
error: function(err) {
console.error('Ошибка запроса', err);
}
});
Также поддерживается отправка данных в формате JSON:
u.ajax({
url: '/api/save',
method: 'POST',
data: { name: 'Umbrella' },
contentType: 'application/json',
success: function(response) {
console.log('Данные отправлены', response);
}
});
При сборке проекта с Webpack рекомендуется использовать
ES-модули, что упрощает tree-shaking и уменьшает размер
итогового бандла. Все функции Umbrella JS импортируются через основной
объект u:
import u from '@umbraco/umbrella';
const listItems = u('.list-item');
listItems.addClass('processed');
Можно также комбинировать Umbrella JS с другими библиотеками или компонентами, сохраняя лёгкость и минимальный вес проекта.
.class, #id) вместо универсальных
(div) для уменьшения объёма работы по выборке
элементов.Umbrella JS обеспечивает удобный и лёгкий инструмент для работы с DOM, а при правильной интеграции с Webpack позволяет строить современные модульные приложения с минимальным бандлом и высокой производительностью.