Объект $ в Zepto представляет собой центральный
интерфейс для работы с DOM, событиями, AJAX, а также вспомогательными
утилитами. Он сочетает удобную краткость записи и гибкость, характерную
для jQuery, но с прицелом на минималистичность и современный браузерный
стек.
$ служит фабрикой, возвращающей объект-коллекцию Zepto.
Внутри коллекции находятся элементы DOM, над которыми выполняются
методы: выборка, манипуляции, привязка обработчиков событий, анимации,
сетевые запросы. Данный подход сводит множество операций к цепочкам
вызовов, повышая выразительность кода.
Селекторы CSS. Наиболее распространённый сценарий — передача селектора строкой, например:
$('.item')
В результате возвращается коллекция элементов, соответствующих селектору. Коллекция обладает методами для чтения и записи свойств, атрибутов, классов и содержимого.
Передача DOM-элемента. Если $ получает
нативный DOM-элемент, он оборачивается в коллекцию:
$(document.body)
Создание элементов. Строка, начинающаяся с символа
<, интерпретируется как HTML-фрагмент и преобразуется в
новый DOM-элемент:
$('<div class="box"></div>')
Коллекция Zepto — это массивоподобный объект. Индексация начинается с
нуля, есть свойство length. Методы коллекции в большинстве
случаев возвращают саму коллекцию, что позволяет использовать
цепочки:
$('.item').addClass('active').text('Готово')
Такой стиль исключает промежуточные переменные и делает код более компактным.
Через $ выполняются операции изменения структуры или
содержимого документа.
Работа с атрибутами и свойствами. Методы
attr, prop, data позволяют читать
и изменять значения. Передача пары ключ–значение выполняет запись,
передача одного ключа — чтение.
Управление классами. Методы addClass,
removeClass, toggleClass и
hasClass обеспечивают манипуляции с классами без прямого
обращения к classList.
Изменение HTML и текста. Методы html и
text отвечают за содержимое. append,
prepend, before, after — за
вставку узлов в нужные места DOM-дерева.
Через $ реализуется механизм подписки и публикации
событий на DOM-элементах.
Подписка. Метод on принимает имя
события и обработчик. Возможна делегация событий, когда обработчик
назначается на родительский элемент, а реагирует на цели,
удовлетворяющие селектору.
Удаление подписки. Метод off снимает
обработчики по имени события или по конкретной функции.
Упрощённые шорткаты. Некоторые события имеют
сокращения: click, focus, blur и
другие. Вызов без аргументов инициирует событие, а с функцией —
устанавливает обработчик.
Объект $ предоставляет доступ к CSS-переходам и простым
анимациям. Методы animate и transition
позволяют менять стили с течением времени. Поддерживается указание
длительности, кривой ускорения и коллбеков завершения.
Через $ вызываются функции для сетевых операций. Метод
$.ajax предоставляет универсальный интерфейс для
HTTP-запросов. Краткие методы $.get, $.post и
$.getJSON облегчаяют отправку запросов с минимальными
параметрами.
Типичный вызов:
$.get('/data', function (response) {
console.log(response)
})
Аргументы позволяют задавать метод, заголовки, формат данных, обработчики успеха и ошибки.
Помимо DOM и сетевых запросов $ содержит дополнительные
утилиты: $.each, $.extend,
$.grep, $.map и другие. Эти функции упрощают
работу с массивами и объектами, обеспечивая более последовательный стиль
кода.
Расширение объектов. $.extend
используется для поверхностного копирования свойств из одного или
нескольких объектов в целевой:
var opts = $.extend({}, defaults, config)
Объект $ выступает точкой расширения. Методы можно
добавлять в прототип коллекции Zepto, реализуя собственные плагины.
Расширения обеспечивают единообразие синтаксиса и позволяют
сосредоточить отдельные функциональные задачи в самостоятельных
модулях.
Zepto ориентирован на современные браузеры с поддержкой
querySelectorAll, addEventListener и других современных API, что
позволило сократить объём кода и избавиться от устаревших ветвей. Объект
$ отражает эту философию: он предоставляет уровнем
абстракции, достаточным для удобства, но не выходит за рамки
необходимого минимума.
Объект $ в Zepto становится связующим звеном между DOM,
событиями, анимациями и AJAX. Его цель — обеспечить лаконичную и
практичную модель работы с клиентским кодом на JavaScript, сохраняя при
этом большую часть удобства, привычного по jQuery, но без лишнего
веса.