Библиотека Cash представляет собой облегчённый
аналог jQuery с совместимым API, ориентированный на современные
браузеры. Основная идея Cash — минимизация размера и упрощение работы с
DOM без необходимости поддержки устаревших браузеров. Основной объект
библиотеки создаётся с помощью функции cash(), которая
возвращает коллекцию элементов DOM, аналогичную объекту jQuery.
const elems = cash('.my-class');
Коллекция элементов поддерживает методы для манипуляций с DOM, работы с атрибутами, событиями и анимацией. Методы часто цепочечные, что позволяет писать компактный и выразительный код:
cash('.my-class')
.addClass('active')
.css('color', 'red')
.on('click', () => console.log('Clicked'));
Добавление и удаление элементов
Cash предоставляет методы .append(),
.prepend(), .before(), .after(),
.remove() для работы с элементами DOM:
cash('ul').append('<li>Новый элемент</li>');
cash('li:first').remove();
Отличие от jQuery заключается в том, что Cash не поддерживает все
старые браузеры и ориентирован на использование современных методов,
таких как Element.insertAdjacentHTML вместо сложных обходов
для IE.
Клонирование элементов
Метод .clone() работает аналогично jQuery, но без
глубокого клонирования событий по умолчанию:
const clone = cash('.box').clone();
cash('body').append(clone);
Чтобы скопировать события, нужно использовать дополнительную обработку вручную.
Методы .addClass(), .removeClass(),
.toggleClass() полностью совместимы с синтаксисом jQuery,
но работают быстрее за счёт отсутствия полифиллов для старых
браузеров.
cash('.item').addClass('highlight');
cash('.item').toggleClass('hidden');
Методы для атрибутов .attr(),
.removeAttr(), .prop() позволяют управлять
свойствами элементов:
cash('input').attr('placeholder', 'Введите текст');
cash('input').prop('checked', true);
Cash поддерживает методы .on(), .off(),
.trigger(). Поддерживаются делегирование и обработка
нескольких событий одновременно:
cash('button').on('click mouseover', (e) => console.log(e.type));
cash('ul').on('click', 'li', (e) => console.log('Clicked li'));
Особенностью является более лёгкая реализация делегирования через
стандартные методы addEventListener, что снижает накладные
расходы по сравнению с jQuery.
Cash поддерживает ограниченный набор эффектов: .hide(),
.show(), .fadeIn(), .fadeOut(),
.toggle():
cash('.box').fadeOut(400).fadeIn(400);
Эффекты основаны на CSS-переходах и
requestAnimationFrame, что делает их более современными и
производительными по сравнению с устаревшей анимационной системой
jQuery.
В отличие от jQuery, Cash не включает полноценный AJAX-модуль. Для
работы с сервером рекомендуется использовать fetch или
сторонние библиотеки. Это делает Cash легче, но требует знания
современных API:
fetch('/api/data')
.then(res => res.json())
.then(data => console.log(data));
| Особенность | Cash | jQuery |
|---|---|---|
| Размер | ~10 KB minified | ~90 KB minified |
| Поддержка старых браузеров | Только современные | Широкая, включая IE 6+ |
| Методы цепочки | Полностью поддерживаются | Полностью поддерживаются |
| AJAX | Нет встроенного, использовать fetch | Встроенные методы $.ajax, $.get, $.post |
| Эффекты | Ограниченные, через CSS | Полный набор, включая сложные анимации |
| События | Поддержка делегирования через addEventListener | Сложная кроссбраузерная система |
Cash выигрывает по скорости и размеру, но уступает по функциональности, если проект требует широкого набора старых методов и поддержки устаревших браузеров.
С точки зрения современного JavaScript, Cash ближе к Vanilla JS по производительности и лёгкости. Многие задачи, которые раньше решались через jQuery, сейчас выполняются с помощью стандартных методов DOM:
$()Cash сочетает удобство jQuery-подобного API с преимуществами нативного подхода: малый вес, отсутствие лишних полифиллов и высокая скорость выполнения.
.each(), .map() через
простые циклы.Cash подходит для проектов, где важны:
Для сложных проектов с широкой поддержкой старых браузеров и необходимостью расширенного набора инструментов jQuery Cash может быть недостаточен, но как альтернатива для современных приложений он оптимален.