Библиотека Bliss.js предоставляет удобный способ динамического
создания DOM-элементов с помощью метода $.create(). Этот
метод объединяет функциональность создания элементов, добавления
атрибутов, классов и вложенного контента в один компактный вызов.
$.create(tagName, options)
tagName — строка с именем создаваемого элемента
('div', 'span', 'ul' и т.
д.).
options — объект с настройками элемента, включающий:
className или class — строка или массив
строк, задающие классы элемента.id — идентификатор элемента.attributes — объект, где ключи — имена атрибутов,
значения — их значения.text — текстовое содержимое элемента.html — HTML-контент элемента.children — массив вложенных элементов, созданных через
$.create() или существующих DOM-узлов.events — объект с событиями, где ключ — название
события, значение — обработчик.Создание простого div с текстом:
const div = $.create('div', { text: 'Привет, Bliss.js!' });
document.body.appendChild(div);
Создание элемента с классами и id:
const box = $.create('div', {
id: 'my-box',
class: ['container', 'highlight'],
text: 'Контейнер с классами'
});
document.body.appendChild(box);
Создание элемента с атрибутами:
const link = $.create('a', {
text: 'Перейти на сайт',
attributes: {
href: 'https://example.com',
target: '_blank',
rel: 'noopener'
}
});
document.body.appendChild(link);
childrenchildren позволяет создавать сложные структуры DOM без
дополнительных вызовов appendChild.
const list = $.create('ul', {
class: 'menu',
children: [
$.create('li', { text: 'Главная' }),
$.create('li', { text: 'О нас' }),
$.create('li', { text: 'Контакты' })
]
});
document.body.appendChild(list);
Такой подход уменьшает количество кода и повышает читаемость при создании вложенных структур.
$.create() поддерживает назначение событий прямо при
создании элемента через объект events.
const button = $.create('button', {
text: 'Нажми меня',
events: {
click: () => alert('Кнопка нажата'),
mouseenter: (e) => e.target.style.backgroundColor = 'lightblue',
mouseleave: (e) => e.target.style.backgroundColor = ''
}
});
document.body.appendChild(button);
Это позволяет объединить создание элемента и привязку обработчиков,
исключая необходимость писать отдельные
addEventListener.
В отличие от text, свойство html позволяет
добавлять разметку:
const container = $.create('div', {
html: '<strong>Жирный текст</strong> и обычный текст'
});
document.body.appendChild(container);
Важно помнить, что использование html напрямую вставляет
HTML-код, поэтому при работе с пользовательским вводом следует избегать
уязвимостей XSS.
text и childrenЕсли одновременно указаны text и children,
Bliss.js добавляет текст в начало элемента, а потом вставляет все
дочерние элементы:
const card = $.create('div', {
text: 'Карточка:',
class: 'card',
children: [
$.create('p', { text: 'Описание карточки' }),
$.create('button', { text: 'Подробнее' })
]
});
document.body.appendChild(card);
Часто $.create() используется внутри функций для
генерации контента на основе данных:
const users = [
{ name: 'Алексей', age: 30 },
{ name: 'Мария', age: 25 }
];
const userList = $.create('ul', {
children: users.map(user =>
$.create('li', { text: `${user.name}, ${user.age} лет` })
)
});
document.body.appendChild(userList);
Это делает код декларативным и удобным для работы с массивами данных.
children, чем многократные
appendChild.attributes предпочтительнее для нестандартных
атрибутов (data-*, aria-*).text безопаснее, чем
html, так как автоматически экранирует символы.events обеспечивают чистый и компактный
синтаксис без разрыва логики создания элемента и назначения
обработчиков.$.create() — центральный инструмент Bliss.js для
декларативного создания DOM, позволяющий объединить структуру, стили,
атрибуты и события в одном объекте. Он особенно полезен при динамическом
формировании интерфейсов и компонентов.