Bliss.js представляет собой легковесную библиотеку для работы с DOM и асинхронными операциями в браузере. Основной принцип — минимизация объёма кода при выполнении стандартных операций с элементами страницы. Библиотека сочетает в себе удобства jQuery и современный подход к нативному JavaScript, позволяя использовать цепочки методов, селекторы и события без громоздкой структуры.
Ключевые возможности Bliss.js:
$ и $$ для одиночного
элемента и коллекции соответственно.Bliss.js использует функции $ и $$ для
выборки элементов. $ возвращает первый совпадающий элемент,
$$ — коллекцию всех элементов, соответствующих
селектору:
let button = $('#submit-button');
let items = $$('.list-item');
Эти объекты расширены методами библиотеки:
button.addClass('active').on('click', () => {
console.log('Кнопка нажата');
});
items.forEach(item => item.toggleClass('highlight'));
Методы addClass, removeClass,
toggleClass позволяют управлять стилями элементов без
обращения к classList напрямую. Атрибуты можно получать и
устанавливать через attr:
let url = button.attr('data-url');
button.attr('disabled', true);
Bliss.js поддерживает стандартные DOM-события, добавляя удобный синтаксис:
button.on('mouseover mouseout', e => {
e.target.toggleClass('hovered');
});
Метод once позволяет привязать обработчик однократно,
что полезно для асинхронных инициализаций:
button.once('click', () => alert('Нажато один раз'));
Библиотека облегчает работу с промисами и генераторами. Метод
ajax возвращает промис для асинхронного запроса:
$.ajax('/api/data', { method: 'GET' })
.then(response => console.log(response))
.catch(error => console.error(error));
Поддержка генераторов позволяет писать асинхронный код в синхронном стиле:
function* fetchData() {
try {
let data = yield $.ajax('/api/items');
console.log(data);
} catch (e) {
console.error(e);
}
}
Bliss.run(fetchData);
Bliss.js оптимально сочетает нативные возможности JavaScript и методы библиотеки, позволяя применять гибридные подходы:
$ и
$$.let container = $('#container');
container.appendChild(document.createElement('div'));
container.addClass('container-enhanced');
document.getElementById('menu').addEventListener('click', () => console.log('Нативный клик'));
$('#menu').on('click', () => console.log('Bliss клик'));
async/await.async function loadData() {
let response = await $.ajax('/api/data');
console.log(response);
}
$.fn.flash = function(duration = 500) {
this.addClass('flash');
setTimeout(() => this.removeClass('flash'), duration);
return this;
};
$('#alert').flash(1000);
Коллекции, возвращаемые $$, расширены функционалом
массива и методами Bliss:
let buttons = $$('.btn');
buttons.forEach(btn => btn.on('click', () => console.log(btn.textContent)));
buttons.filter(btn => btn.classList.contains('primary')).forEach(btn => btn.disable());
Методы map, filter и reduce
можно использовать напрямую, что облегчает гибридные операции с набором
элементов.
Bliss.js позволяет создавать плагины для повторно используемых функций:
$.fn.tooltip = function(text) {
this.attr('title', text);
this.on('mouseenter', e => e.target.style.color = 'blue');
return this;
};
$('.info').tooltip('Дополнительная информация');
Такой подход позволяет объединять нативный JavaScript с методами библиотеки, создавая гибкие и компактные решения для интерфейсов.
Гибридный стиль особенно полезен при разработке динамических приложений с большим количеством элементов и событий. Использование Bliss.js позволяет уменьшить количество повторяющегося кода, сохраняя контроль через нативные методы:
let tabs = $$('.tab');
tabs.forEach(tab => {
tab.on('click', e => {
tabs.forEach(t => t.removeClass('active'));
e.target.addClass('active');
document.querySelectorAll('.tab-content').forEach(c => c.style.display = 'none');
document.querySelector(`#${e.target.dataset.target}`).style.display = 'block';
});
});
Такой подход обеспечивает сочетание декларативной логики с манипуляциями DOM без излишней сложности.
Bliss.js как библиотека для гибридных подходов позволяет строить быстрый, компактный и управляемый код, сочетая преимущества нативного JavaScript с удобными методами работы с DOM, событиями и асинхронными операциями.