Zepto — это лёгкая библиотека JavaScript, ориентированная на работу с DOM и событиями. Она предоставляет API, совместимый с jQuery, но с меньшим объёмом кода, что делает её удобной для мобильных приложений и лёгких веб-проектов. Основные возможности Zepto включают выбор элементов, манипуляцию DOM, работу с событиями, анимацию и AJAX.
Выбор элементов осуществляется с помощью функции $. Она
принимает селектор CSS или HTML-элемент и возвращает объект Zepto с
набором методов для работы с выбранными элементами.
var header = $('header');
var buttons = $('.btn');
var firstItem = $('#list li:first-child');
Особенности:
Zepto предоставляет методы для изменения структуры документа и содержимого элементов:
$('#content').html('<p>Новый текст</p>');
$('.item').append('<span>Дополнительно</span>');
$('#menu').prepend('<li>Главная</li>');
html() — получает или задаёт HTML содержимое.text() — аналогично для текста без HTML.append(), prepend() — добавляют элементы
внутрь выбранных элементов.before(), after() — вставляют элементы
перед или после выбранных элементов.$('img').attr('src', 'image.jpg');
$('.link').attr('target', '_blank');
$('#box').css('width', '200px');
$('#box').css({height: '100px', backgroundColor: 'blue'});
attr() — получение или установка атрибутов.removeAttr() — удаление атрибутов.css() — получение или установка стилей; может принимать
объект с несколькими свойствами.Zepto поддерживает работу с событиями через метод on и
его аналоги:
$('.btn').on('click', function() {
alert('Кнопка нажата');
});
$(document).on('keydown', function(e) {
console.log('Нажата клавиша:', e.key);
});
on(event, selector, handler) — навешивание события с
делегированием.off(event, handler) — удаление обработчиков.trigger(event) — программный вызов события.Для коротких обработчиков также существуют сокращённые методы,
например: click(handler), focus(handler).
Zepto предоставляет простые средства для анимации:
$('#box').fadeOut(500, function() {
console.log('Анимация завершена');
});
$('#box').fadeIn(300);
$('#box').slideUp(400).slideDown(400);
fadeIn(), fadeOut() — плавное появление и
исчезновение элементов.slideUp(), slideDown() — сворачивание и
разворачивание элементов.Zepto включает методы для работы с HTTP-запросами:
$.get('/api/data', {id: 1}, function(response) {
console.log(response);
});
$.post('/api/save', {name: 'John'}, function(result) {
console.log(result);
});
$.ajax({
url: '/api/update',
type: 'PUT',
data: {status: 'active'},
success: function(data) {
console.log('Обновление успешно');
},
error: function(err) {
console.log('Ошибка запроса', err);
}
});
$.get(), $.post() — простые GET и POST
запросы.$.ajax() — универсальный метод с настройкой типа
запроса, данных, заголовков и обработчиков.Zepto можно расширять через плагины и собственные методы:
$.fn.highlight = function(color) {
this.css('background-color', color);
return this;
};
$('.item').highlight('yellow');
$.fn — объект для добавления методов к выбранным
элементам.this обеспечивает цепочки вызовов.Для крупных проектов рекомендуется структурировать код, разделяя функциональные модули и обработку событий:
var App = {
init: function() {
this.cacheElements();
this.bindEvents();
this.loadData();
},
cacheElements: function() {
this.$menu = $('#menu');
this.$content = $('#content');
},
bindEvents: function() {
var self = this;
this.$menu.on('click', 'li', function() {
self.showContent($(this).data('id'));
});
},
loadData: function() {
var self = this;
$.get('/api/items', function(items) {
self.render(items);
});
},
render: function(items) {
this.$content.html(items.map(function(item) {
return '<div>' + item.name + '</div>';
}).join(''));
},
showContent: function(id) {
console.log('Показ содержимого для', id);
}
};
$(function() {
App.init();
});
this и замыканий —
сохраняет контекст внутри обработчиков.Zepto поддерживает события сенсорных экранов:
$('#swipeArea').on('swipeLeft', function() {
console.log('Свайп влево');
});
$('#tapButton').on('tap', function() {
console.log('Нажатие на кнопку');
});
tap, doubleTap,
swipe, swipeLeft,
swipeRight.Zepto содержит набор вспомогательных функций:
$.each([1, 2, 3], function(index, value) {
console.log(index, value);
});
var merged = $.extend({a: 1}, {b: 2}, {a: 3}); // {a: 3, b: 2}
$.each() — перебор массивов и объектов.$.extend() — объединение объектов, часто используется
для настроек плагинов.$.isArray(), $.isFunction(),
$.isPlainObject() — проверка типов.Для поддержки модульной архитектуры Zepto может использоваться совместно с шаблонизаторами и сборщиками:
define(['zepto'], function($) {
var Module = {
init: function() {
$('#btn').on('click', this.handleClick);
},
handleClick: function() {
alert('Модуль активирован');
}
};
return Module;
});