Библиотека Cash представляет собой легковесную альтернативу jQuery, обеспечивающую удобные методы работы с DOM, событиями, анимациями и AJAX. Она ориентирована на современные браузеры и использует нативные возможности JavaScript для повышения производительности. Основная идея Cash — минимальный синтаксис при сохранении привычных концепций работы с элементами страницы.
import $ from 'cash-dom';
$('.element').addClass('active');
В этом примере видно, что $(selector) возвращает объект,
похожий на массив элементов, с набором методов для манипуляции.
Метод $(selector) позволяет выбрать элементы по
CSS-селектору. Возвращаемый объект поддерживает такие методы, как:
.addClass(className) — добавляет класс;.removeClass(className) — удаляет класс;.toggleClass(className) — переключает наличие
класса;.attr(attribute, value) — чтение или установка
атрибута;.css(property, value) — чтение или установка
стилей.$('#menu').toggleClass('open');
$('#menu').css('display', 'block');
Важно помнить, что операции над DOM выполняются для каждого элемента в коллекции.
Cash предоставляет методы для работы с текстом, HTML и элементами:
.html([htmlString]) — чтение или замена HTML
содержимого;.text([textString]) — чтение или замена текста;.append(content) — добавление элемента внутрь
выбранных;.prepend(content) — вставка в начало;.after(content) и .before(content) —
вставка относительно элемента.$('.container').append('<div class="item">Новый элемент</div>');
$('.container').prepend('<div class="header">Заголовок</div>');
Методы принимают как строки HTML, так и объекты DOM или другие объекты Cash.
Cash упрощает регистрацию событий и их обработку:
.on(event, handler) — добавление обработчика;.off(event, handler) — удаление обработчика;.trigger(event) — инициирование события.$('#button').on('click', function(e) {
console.log('Клик по кнопке');
});
$('#button').off('click');
Поддерживаются делегирование событий и множественные события через пробел:
$('#list').on('click mouseenter', 'li', function() {
console.log('Элемент списка активен');
});
Cash включает простые методы анимации:
.fadeIn(duration, callback) — плавное появление;.fadeOut(duration, callback) — плавное
исчезновение;.fadeToggle(duration, callback) — переключение
видимости с анимацией;.show() и .hide() — мгновенное изменение
видимости.$('.modal').fadeIn(300, function() {
console.log('Модальное окно появилось');
});
В отличие от jQuery, Cash не реализует сложные цепочки анимаций, что упрощает производительность и делает библиотеку легкой.
Для работы с сетью Cash использует метод
.ajax(options):
$.ajax({
url: '/api/data',
method: 'GET',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(err) {
console.error(err);
}
});
Параметры аналогичны jQuery:
url — адрес запроса;method — HTTP-метод;data — данные для отправки;dataType — ожидаемый формат;success и error — колбэки.Также можно использовать короткие методы:
$.get(url, callback) и
$.post(url, data, callback).
Cash позволяет переписывать привычные jQuery-конструкции без потери функциональности. Рассмотрим несколько примеров.
Добавление и удаление классов
jQuery:
$('#box').addClass('active').removeClass('hidden');
Cash:
$('#box').addClass('active').removeClass('hidden');
Разницы практически нет, синтаксис полностью совместим.
Обработка событий
jQuery:
$('#btn').on('click', function() {
$(this).hide();
});
Cash:
$('#btn').on('click', function() {
$(this).hide();
});
Манипуляции с содержимым
jQuery:
$('#list').append('<li>Элемент</li>');
Cash:
$('#list').append('<li>Элемент</li>');
Анимации
jQuery:
$('.modal').fadeIn(400).fadeOut(400);
Cash:
$('.modal').fadeIn(400, function() {
$(this).fadeOut(400);
});
Здесь видна небольшая разница в методах цепочки, но по сути поведение совпадает.
const $menu = $('#menu');
$menu.addClass('active');
Cash полностью совместим с ES6+ и модульной структурой. Можно
использовать import $ from 'cash-dom'; и подключать методы
по необходимости. Работа с промисами и async/await позволяет
интегрировать AJAX-запросы и асинхронные операции:
async function fetchData() {
try {
const response = await $.ajax({ url: '/api/items', dataType: 'json' });
console.log(response);
} catch (err) {
console.error(err);
}
}
Библиотека не требует глобальной переменной $, что
упрощает модульное программирование.
querySelectorAll,
classList, fetch.Cash сочетает:
Эта библиотека подходит для проектов, где требуется удобный API, похожий на jQuery, при минимальном объеме кода и высокой производительности.