Zepto.js — легковесная библиотека JavaScript, ориентированная на работу с DOM, событиями и AJAX. Одной из полезных возможностей при динамическом формировании интерфейсов является использование шаблонов для генерации HTML. В Zepto подход к шаблонам строится на простых строковых конструкциях и манипуляциях с DOM-элементами.
Zepto предоставляет несколько методов для добавления HTML в документ:
.html() — заменяет содержимое
выбранного элемента:$('#container').html('<p>Пример текста</p>');
Если вызвать метод без аргумента, он возвращает текущее содержимое:
var content = $('#container').html();
.append() — добавляет HTML внутрь
выбранного элемента в конец:$('#list').append('<li>Новый элемент</li>');
.prepend() — добавляет HTML в начало
выбранного элемента:$('#list').prepend('<li>Первый элемент</li>');
.before() и .after() —
вставка вне выбранного элемента:$('#list').before('<p>Перед списком</p>');
$('#list').after('<p>После списка</p>');
Эти методы позволяют строить шаблоны на основе строкового HTML и динамически вставлять их в DOM.
Часто необходимо формировать HTML с динамическими данными. В Zepto это удобно делать через шаблонные строки ES6:
var users = [
{name: 'Иван', age: 25},
{name: 'Мария', age: 30}
];
var html = users.map(user => `
<div class="user-card">
<h2>${user.name}</h2>
<p>Возраст: ${user.age}</p>
</div>
`).join('');
$('#users-container').html(html);
Array.map() преобразует массив
объектов в массив строк..join('') объединяет строки в один
HTML-фрагмент.${}.Если требуется многократное использование одного шаблона, можно создать DOM-элемент и клонировать его:
var template = $('<div class="item"><span class="name"></span></div>');
users.forEach(user => {
var item = template.clone();
item.find('.name').text(user.name);
$('#list').append(item);
});
.clone() создаёт копию выбранного
элемента..find() ищет дочерние элементы внутри
клона..text() безопасно вставляет текст без
риска HTML-инъекции.Такой подход полезен для списков, таблиц или карточек, где структура элемента одинакова, а данные разные.
Для сложных случаев удобно оформлять шаблон в виде функции:
function renderUser(user) {
return `
<div class="user-card">
<h2>${user.name}</h2>
<p>Возраст: ${user.age}</p>
<p>Email: ${user.email}</p>
</div>
`;
}
var html = users.map(renderUser).join('');
$('#users-container').html(html);
Функция-шаблон повышает читаемость кода и облегчает поддержку, так как структура HTML вынесена в отдельный блок.
Zepto позволяет не только создавать новые элементы, но и обновлять существующие:
$('#user-1 .name').text('Алексей');
$('#user-1 .age').text(28);
Методы .text() и
.html() используются для подстановки
данных в выбранные элементы, обеспечивая динамическое обновление
интерфейса без перерисовки всего контейнера.
Шаблоны часто содержат интерактивные элементы. В Zepto можно назначать события после вставки HTML:
$('#users-container').html(html);
$('.user-card').on('click', function() {
alert($(this).find('h2').text());
});
.on() и
.off() позволяют управлять событиями.Для динамически создаваемых элементов можно использовать делегирование:
$('#users-container').on('click', '.user-card', function() {
alert($(this).find('h2').text());
});
Так обработчики будут работать даже для элементов, созданных после инициализации.
.html(),
.append(), .prepend() для вставки
контента.Эти техники позволяют строить сложные, динамические интерфейсы, сохраняя код компактным и управляемым, используя минималистичный подход Zepto.js.