Bliss.js представляет собой лёгкую и мощную библиотеку для работы с
DOM, упрощающую поиск и манипуляцию элементами. Основной функционал по
выбору элементов построен на удобных, лаконичных методах, которые
сокращают привычный синтаксис стандартного
document.querySelector и
document.querySelectorAll.
$ — поиск одного элементаМетод $ возвращает первый элемент, который соответствует
CSS-селектору. Его использование аналогично
document.querySelector, но с более компактным
синтаксисом:
var button = $('.btn-primary');
Если элемент не найден, возвращается null, что позволяет
легко проверять результат:
if ($('.non-existent')) {
// элемент найден
} else {
// элемент отсутствует
}
$$ — поиск всех элементовМетод $$ возвращает массив всех элементов,
соответствующих селектору, что удобно для перебора с методами
массива:
var items = $$('.menu-item');
items.forEach(function(item) {
item.classList.add('highlight');
});
В отличие от document.querySelectorAll, возвращается
полноценный массив, а не NodeList, что устраняет необходимость
использовать Array.from или forEach для
перебора.
Bliss.js позволяет выполнять выборку элементов относительно
конкретного родителя. Методы $ и $$ могут
применяться к любому элементу:
var container = $('#container');
var links = container.$$('a');
Таким образом, поиск ограничивается элементами внутри контейнера, что повышает производительность при работе с большим DOM.
Библиотека поддерживает все стандартные CSS-селекторы, включая атрибуты и псевдоклассы:
var requiredInputs = $$('input[required]');
var firstVisible = $$('div:not(.hidden)');
С помощью Bliss.js можно легко комбинировать селекторы для сложных условий:
var activeItems = $$('.list-item.active[data-type="primary"]');
Bliss.js расширяет выборку встроенными методами для фильтрации и навигации по DOM:
filter — фильтрация элементов по
условию:var visibleItems = $$('.item').filter(function(el) {
return el.offsetParent !== null;
});
find — поиск дочерних элементов внутри
выбранных элементов:var firstLinks = $$('.menu').find('a');
closest — поиск ближайшего родителя по
селектору:var form = $('.submit-button').closest('form');
parent и children —
навигация по дереву DOM:var parentDiv = $('#element').parent();
var childItems = $('#list').children();
Эти методы позволяют работать с DOM как с цепочкой объектов, сокращая количество повторных запросов.
| Функция | Bliss.js | Нативный JS |
|---|---|---|
| Выбор одного элемента | $() |
document.querySelector() |
| Выбор нескольких | $$() |
document.querySelectorAll() |
| NodeList → массив | автоматически | Array.from() |
| Фильтрация | .filter() |
требуется Array.from + filter |
| Вложенные выборки | element.$() |
element.querySelector() |
| Навигация | .parent(), .children() |
parentNode, .children |
Bliss.js делает код более читаемым и сокращает шаблонные конструкции, особенно при работе с динамическим DOM.
var tabs = $$('.tab');
tabs.forEach(function(tab, index) {
tab.classList.toggle('active', index === 0);
});
$('#form').$$('button').forEach(function(btn) {
btn.addEventListener('click', function() {
console.log('Нажата кнопка', btn.textContent);
});
});
$$('input[data-required="true"]').forEach(function(input) {
input.style.border = '1px solid red';
});
Bliss.js использует внутренние оптимизации, поэтому при работе с большими DOM-структурами:
element.$()
/ element.$$()) сокращает время выполнения.map, filter, forEach, минимизируя
дополнительный код.Выбор элементов в Bliss.js сочетает лаконичность синтаксиса с
гибкостью стандартного CSS. Сочетание методов $,
$$, навигационных функций и фильтрации позволяет создавать
чистый, структурированный и легко читаемый код для сложных
интерфейсов.