Zepto.js создавался как легковесная альтернатива jQuery, ориентированная на мобильные браузеры. Библиотека имеет схожий синтаксис с jQuery, что облегчает переход, но существует несколько ключевых отличий:
Zepto можно подключить через CDN или локально. При локальном подключении возможен выбор модулей:
<script src="zepto.min.js"></script>
<script src="zepto-event.js"></script>
<script src="zepto-ajax.js"></script>
<script src="zepto-touch.js"></script>
Подключение модулей должно соответствовать используемому функционалу, иначе методы могут быть недоступны.
Zepto использует $() аналогично jQuery для поиска
элементов и создания коллекций DOM.
Примеры:
var items = $('.item'); // выбор всех элементов с классом item
var first = $('#first'); // выбор элемента по id
var newDiv = $('<div>Пример</div>'); // создание нового элемента
Методы работы с DOM в Zepto включают:
.html(), .text() — получение или установка
содержимого;.attr(), .prop() — работа с атрибутами и
свойствами;.css() — управление стилями;.append(), .prepend(),
.after(), .before() — вставка элементов;.remove(), .empty() — удаление
элементов.Отличие: методы .width(), .height(),
.offset() работают аналогично jQuery, но функции
.animate() поддерживаются только при подключении модуля
Fx.
Zepto поддерживает события через .on(),
.off(), .trigger() и короткие методы
(.click(), .tap(), .focus() и
др.). Мобильные события (tap, swipe,
pinch) требуют модуля zepto-touch.js.
$('.button').on('tap', function() {
$(this).toggleClass('active');
});
Особенность: делегирование событий в Zepto работает, но методы
.delegate() и .live() отсутствуют; вместо них
используется .on(event, selector, handler).
Zepto имеет встроенный модуль zepto-ajax.js, реализующий
основные методы: $.ajax(), $.get(),
$.post(), $.getJSON().
$.ajax({
url: '/api/data',
method: 'GET',
dataType: 'json',
success: function(response) {
console.log(response);
},
error: function(err) {
console.error(err);
}
});
Отличия от jQuery:
jsonp поддерживается, но требуется указание
callback=? в URL;beforeSend для всех типов
запросов, только через $.ajax options;.done(), .fail(), .always()
работают, но некоторые версии Zepto могут требовать модуля
zepto-promise.js для полноценной цепочки.Zepto предоставляет базовые эффекты через модуль Fx:
.fadeIn(), .fadeOut(),
.fadeToggle();.slideDown(), .slideUp(),
.slideToggle();.animate(properties, duration, easing, callback).Особенность: в отличие от jQuery, сложные цепочки анимаций могут работать иначе из-за отсутствия полной поддержки queue и fx hooks.
Модуль zepto-form.js позволяет:
$('form').serialize();$('form').serializeArray();.val() и
.prop('checked', true).Zepto не реализует полностью методы .submit() с
делегированием событий на все формы документа, как jQuery.
Zepto поддерживает плагины, но их структура отличается:
$.fn.myPlugin = function(options) {
return this.each(function() {
var $this = $(this);
// действия с элементом
});
};
Важно помнить: многие плагины jQuery не будут работать без адаптации,
особенно если они используют отсутствующие методы .live(),
.bind(), .delegate() или расширенные
анимации.
zepto-touch.js для жестов;.live()
→ .on());Большинство базовых операций DOM, событий и Ajax переносятся без изменений. Основные проблемные зоны:
.live() и
.delegate();Zepto отлично подходит для мобильных проектов и современных веб-приложений, где критична скорость загрузки и минимальный вес библиотеки. При правильной миграции код становится легче и быстрее, сохраняя знакомый синтаксис jQuery.