Bliss.js — это легковесная библиотека для работы с DOM, которая упрощает создание, вставку и манипулирование элементами в документе. Основные возможности библиотеки позволяют создавать элементы, добавлять их в существующую структуру и управлять их свойствами и событиями с минимальным количеством кода.
Для создания элементов в Bliss.js используется функция
$.create(tag, [props], [children]).
Параметры:
tag — строка с именем HTML-тега (div,
span, ul и т.д.).props — объект с атрибутами, свойствами и обработчиками
событий.children — массив дочерних элементов или строки,
которые будут вставлены внутрь создаваемого элемента.Пример создания элемента с текстом и классом:
var box = $.create('div', { className: 'box' }, 'Содержимое блока');
document.body.appendChild(box);
В этом примере создаётся <div> с классом
box и текстовым содержимым, который добавляется в
body.
Bliss.js предоставляет удобные методы для вставки элементов относительно других узлов:
el.appendChild(child) — добавление в конец
элемента.el.prependChild(child) — добавление в начало
элемента.el.before(child) — вставка перед элементом.el.after(child) — вставка после элемента.Пример добавления нескольких элементов:
var list = $.create('ul', { id: 'menu' });
var items = ['Главная', 'О нас', 'Контакты'].map(function(text) {
return $.create('li', {}, text);
});
items.forEach(function(item) {
list.appendChild(item);
});
document.body.appendChild(list);
Здесь создаётся список <ul> с тремя
<li> элементами, добавленными через метод
appendChild.
Bliss.js позволяет создавать сложные структуры элементов в одной операции. Использование вложенных массивов упрощает добавление дочерних элементов:
var card = $.create('div', { className: 'card' }, [
$.create('h2', {}, 'Заголовок карточки'),
$.create('p', {}, 'Описание карточки'),
$.create('button', { onclick: function() { alert('Кнопка нажата'); } }, 'Кнопка')
]);
document.body.appendChild(card);
В этом примере создаётся карточка с заголовком, текстом и кнопкой с обработчиком события.
Созданные элементы можно сразу настраивать через объект
props:
className — задаёт класс элемента.id — идентификатор.style — объект со стилями.onclick,
onmouseover.Пример с настройкой стилей и событий:
var btn = $.create('button', {
id: 'saveBtn',
className: 'btn primary',
style: { backgroundColor: 'green', color: 'white', padding: '10px' },
onclick: function() {
console.log('Сохранение выполнено');
}
}, 'Сохранить');
document.body.appendChild(btn);
Bliss.js позволяет использовать строки с HTML, но рекомендуется комбинировать с методами создания элементов для безопасности:
var container = $.create('div', {}, [
$.create('p', {}, 'Текст параграфа'),
$.create('div', { innerHTML: '<strong>Жирный текст</strong>' })
]);
document.body.appendChild(container);
Использование innerHTML удобно для вставки разметки, но
требует осторожности при работе с пользовательскими данными.
Методы before и after обеспечивают гибкое
позиционирование новых узлов:
var first = document.querySelector('#first');
var newEl = $.create('div', { className: 'highlight' }, 'Новый блок');
first.before(newEl); // вставка перед #first
first.after(newEl.cloneNode(true)); // вставка после #first
Методы принимают как одиночный элемент, так и массив узлов, что позволяет быстро добавлять несколько блоков одновременно.
Для эффективного добавления больших наборов элементов рекомендуется
использовать document.createDocumentFragment() через
Bliss.js:
var fragment = document.createDocumentFragment();
['Пункт 1', 'Пункт 2', 'Пункт 3'].forEach(function(text) {
fragment.appendChild($.create('li', {}, text));
});
var list = $.create('ul', {});
list.appendChild(fragment);
document.body.appendChild(list);
Фрагменты позволяют вставлять множество элементов за одну операцию, что снижает количество перерисовок страницы и повышает производительность.
$.create(tag, props, children)appendChild,
prependChildbefore,
afterpropsprops
(onclick, onmouseover)document.createDocumentFragment()Bliss.js объединяет эти возможности в лаконичный и читаемый синтаксис, позволяя управлять DOM без громоздких вызовов стандартного API и дополнительных библиотек.