Zepto.js — это легковесная библиотека JavaScript, предназначенная для упрощения работы с DOM, обработки событий, выполнения AJAX-запросов и анимации. Она часто рассматривается как более компактная альтернатива jQuery, сохраняя совместимость с большинством его API, но с меньшим размером и высокой скоростью выполнения.
Выбор элементов в Zepto осуществляется с помощью функции
$, аналогично jQuery:
var items = $('.item'); // выбор всех элементов с классом item
var header = $('#header'); // выбор элемента по id
Выбранные элементы оборачиваются в объект Zepto, что позволяет применять к ним методы манипуляции DOM:
items.addClass('active'); // добавление класса
header.text('Новый заголовок'); // изменение текста
$('.list').append('<li>Новый элемент</li>'); // добавление нового элемента
Методы .html(), .text(),
.val(), .attr() позволяют получать и изменять
содержимое, значения и атрибуты элементов.
Zepto поддерживает делегирование событий и стандартные методы для их назначения и удаления:
$('#button').on('click', function() {
alert('Кнопка нажата');
});
$('.item').off('mouseenter'); // удаление обработчика
События могут быть сгруппированы по типам или использоваться с пространствами имён:
$('.item').on('click.myNamespace', function() {
console.log('Клик с пространством имён');
});
Методы .trigger() и .triggerHandler()
позволяют программно инициировать события.
Zepto предоставляет методы для выполнения асинхронных запросов,
включая $.ajax(), $.get(),
$.post():
$.ajax({
url: '/api/data',
method: 'GET',
dataType: 'json',
success: function(response) {
console.log(response);
},
error: function(xhr) {
console.error('Ошибка запроса');
}
});
$.get('/api/data', { id: 1 }, function(data) {
console.log(data);
});
Поддерживаются промисы, что позволяет использовать цепочки
.then() и .catch() для обработки ответов.
Zepto имеет базовые функции для анимации элементов:
.animate(), .fadeIn(),
.fadeOut(), .slideUp(),
.slideDown():
$('.box').animate({ width: '200px', height: '200px' }, 500, 'ease-in', function() {
console.log('Анимация завершена');
});
Методы анимации поддерживают указание продолжительности, функции ускорения и callback для выполнения действий после завершения анимации.
Zepto позволяет легко управлять стилями элементов:
$('.box').css('background-color', 'red'); // установка одного свойства
$('.box').css({
width: '100px',
height: '100px'
}); // установка нескольких свойств
Методы .addClass(), .removeClass(),
.toggleClass() применяются для управления классами
элементов.
Zepto имеет модульную структуру, что облегчает подключение
дополнительных функций. Существуют плагины для слайдеров, масок ввода,
каруселей и других интерфейсных элементов. Расширение функционала
осуществляется методом $.fn:
$.fn.greenify = function() {
this.css('color', 'green');
return this;
};
$('p').greenify(); // применяет плагин ко всем параграфам
Zepto оптимизирован для современных браузеров и мобильных устройств, что делает его предпочтительным для проектов с ограниченными ресурсами. Важные моменты производительности:
Zepto включает модули для работы с тач-событиями
(touchstart, touchmove,
touchend), что упрощает создание интерактивных интерфейсов
на мобильных устройствах:
$('#swipeArea').on('swipeLeft', function() {
console.log('Свайп влево выполнен');
});
Большая часть методов Zepto совпадает с jQuery, что облегчает миграцию проектов с jQuery на Zepto без полной переработки кода. Исключения составляют устаревшие методы, завязанные на старые браузеры, которые Zepto не поддерживает.
Zepto имеет модульную структуру, позволяющую подключать только необходимые функции, например, отдельно подключать модуль AJAX или эффекты. Это позволяет уменьшить размер итоговой сборки. Пример сборки через Node.js и Gulp:
const gulp = require('gulp');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
gulp.task('zepto', function() {
return gulp.src(['zepto/zepto.js', 'zepto/ajax.js', 'zepto/event.js'])
.pipe(concat('zepto.custom.js'))
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
Такой подход позволяет создавать лёгкую версию библиотеки с минимально необходимым функционалом для конкретного проекта, что особенно актуально для мобильных и SPA-приложений.