Zepto — это лёгкая библиотека JavaScript, созданная для удобной
работы с DOM, событиями и AJAX, аналог jQuery, но с минимальным весом.
Для использования Zepto достаточно подключить один файл
zepto.min.js через тег <script> в
HTML:
<script src="zepto.min.js"></script>
Zepto поддерживает основные методы манипуляции DOM, работу с событиями, анимацию и AJAX, что делает её удобным инструментом для разработки лёгких веб-приложений.
Выбор элементов выполняется через функцию $:
var divs = $('div'); // Все элементы <div> на странице
var special = $('#special'); // Элемент с id="special"
var items = $('.item'); // Все элементы с классом "item"
Методы манипуляции DOM:
.html() — чтение или установка HTML
содержимого:$('#content').html('<p>Новый текст</p>');
.text() — получение или установка
текстового содержимого:$('.title').text('Заголовок');
.append() / .prepend() —
добавление элементов внутрь выбранных узлов:$('ul').append('<li>Новый элемент</li>');
.remove() / .empty() —
удаление элементов или их содержимого:$('.old-item').remove();
Zepto предоставляет методы для работы с событиями:
.on(event, handler) — привязка
обработчика к событию:$('#btn').on('click', function() {
alert('Нажатие кнопки');
});
.off(event, handler) — удаление
обработчика:$('#btn').off('click');
.trigger(event) — программальное вызов
события:$('#btn').trigger('click');
Поддерживаются все основные события: click,
mouseover, keydown и пользовательские
события.
Zepto реализует удобные методы для работы с AJAX:
$.ajax(options) — универсальный метод
с настройкой типа запроса, URL, данных и обратных вызовов:$.ajax({
url: '/api/data',
type: 'GET',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(xhr) {
console.error('Ошибка запроса', xhr);
}
});
$.get(url, data, callback, type) —
упрощённый GET-запрос:$.get('/api/user', { id: 1 }, function(user) {
console.log(user.name);
}, 'json');
$.post(url, data, callback, type) —
упрощённый POST-запрос:$.post('/api/save', { name: 'Alex' }, function(response) {
console.log(response.status);
}, 'json');
Zepto поддерживает цепочку методов .done(),
.fail(), .always() для работы с
промисоподобными объектами.
Хотя Zepto сама по себе не является фреймворком для тестирования, её возможности DOM и событий можно эффективно использовать совместно с JavaScript-фреймворками тестирования, такими как Mocha и Jasmine.
<script src="zepto.min.js"></script>
<script src="mocha.js"></script>
<script src="chai.js"></script>
mocha.setup('bdd');
var assert = chai.assert;
Пример проверки добавления элемента:
describe('DOM манипуляции', function() {
beforeEach(function() {
$('body').append('<div id="test"></div>');
});
afterEach(function() {
$('#test').remove();
});
it('добавляет текст в элемент', function() {
$('#test').text('Hello');
assert.equal($('#test').text(), 'Hello');
});
it('удаляет элемент из DOM', function() {
$('#test').remove();
assert.equal($('#test').length, 0);
});
});
Проверка срабатывания событий:
describe('События', function() {
beforeEach(function() {
$('body').append('<button id="btn">Click</button>');
});
afterEach(function() {
$('#btn').remove();
});
it('событие click', function(done) {
$('#btn').on('click', function() {
assert.isTrue(true);
done();
});
$('#btn').trigger('click');
});
});
Zepto позволяет тестировать AJAX с использованием моков и промисов:
describe('AJAX-запросы', function() {
it('успешный GET-запрос', function(done) {
$.get('/api/data', function(data) {
assert.property(data, 'id');
done();
});
});
});
Для полноценного unit-тестирования рекомендуется использовать
инструменты типа Sinon.js для имитации AJAX-запросов и
отслеживания вызовов функций без реального обращения к серверу.
Zepto поддерживает цепочку методов, что позволяет тестировать последовательные манипуляции:
$('#container').append('<div class="item"></div>')
.find('.item')
.text('Текст')
.css('color', 'red');
В тестах можно проверять состояние DOM после каждой операции, что упрощает интеграционные проверки. Пример:
describe('Цепочки вызовов', function() {
beforeEach(function() {
$('body').append('<div id="chain"></div>');
});
afterEach(function() {
$('#chain').remove();
});
it('устанавливает текст и стиль', function() {
$('#chain').append('<span></span>')
.find('span')
.text('Test')
.css('color', 'blue');
var span = $('#chain').find('span');
assert.equal(span.text(), 'Test');
assert.equal(span.css('color'), 'blue');
});
});
afterEach) для изоляции.beforeEach для создания необходимых
элементов перед тестами..css(), .attr()) для полноценной проверки
поведения.Zepto, благодаря простому и лаконичному API, позволяет строить ясные и предсказуемые unit-тесты, интегрируя их с любыми современными фреймворками JavaScript.