Библиотека Cash представляет собой облегчённый аналог jQuery, предоставляющий большинство привычных методов для работы с DOM, событий, анимации и AJAX, но с меньшим весом и более современной архитектурой. При переходе с jQuery на Cash часто применяют стратегию постепенной миграции, позволяющую интегрировать библиотеку без полной перестройки существующего кода.
Cash можно подключить через CDN или пакетный менеджер:
<script src="https://cdn.jsdelivr.net/npm/cash-dom/dist/cash.min.js"></script>
Или через npm:
npm install cash-dom
Инициализация элементов производится аналогично jQuery:
const elements = $('.my-class'); // выборка всех элементов с классом
Важно, что Cash возвращает коллекцию DOM-элементов, а не полноценный объект jQuery, поэтому методы коллекции работают только на выбранных элементах.
При постепенной миграции необходимо выявить наиболее часто используемые методы jQuery и заменить их на аналоги в Cash.
jQuery:
$('#my-id').addClass('active').html('Привет');
Cash:
$('#my-id').addClass('active').html('Привет');
Большинство базовых методов совпадают. Отличие в том, что цепочки
работают только с методами Cash, а методы, специфичные для jQuery
(например, .data() с автоматическим кэшированием), могут
требовать адаптации.
Атрибуты:
$('#my-id').attr('title', 'Новое значение');
CSS:
$('.item').css('color', 'red').css('background-color', 'yellow');
Cash поддерживает массивный формат:
$('.item').css({
color: 'red',
'background-color': 'yellow'
});
Методы .prop() и .val() полностью
совместимы с привычным синтаксисом jQuery.
Cash использует схожий синтаксис для добавления и удаления событий:
$('.btn').on('click', function(e) {
console.log('Нажата кнопка', e.currentTarget);
});
$('.btn').off('click'); // удаление обработчика
Поддерживаются делегирование событий через второй аргумент:
$('#container').on('click', '.btn', function() {
console.log('Делегированное событие');
});
При миграции важно заменить все нестандартные jQuery-события, которых
нет в Cash, например, hover или toggle, на
соответствующие mouseenter/mouseleave или
кастомные реализации.
Cash реализует только базовые методы анимации: .show(),
.hide(), .fadeIn(), .fadeOut(),
.toggle(). Для более сложных эффектов может понадобиться
использование CSS-анимаций или сторонних библиотек.
$('.box').fadeOut(500, function() {
console.log('Анимация завершена');
});
При постепенной миграции рекомендуется сохранять существующие CSS-анимации и заменять только простые вызовы jQuery.
Cash предоставляет лёгкий метод .load() для подгрузки
контента, но не реализует полноценный $.ajax. Для сложных
AJAX-запросов используется стандартный Fetch API:
fetch('/api/data')
.then(response => response.json())
.then(data => {
$('#result').html(JSON.stringify(data));
})
.catch(error => console.error(error));
При постепенной миграции AJAX-запросы лучше переписывать по мере необходимости, сохраняя минимальное количество зависимостей от jQuery.
Для безопасной миграции рекомендуется сохранять jQuery для существующих функций, одновременно внедряя Cash для новых модулей. Это позволяет:
Пример организации:
// Старый код на jQuery
$(document).ready(function() {
$('.old-btn').click(function() {
alert('Старый функционал');
});
});
// Новый код на Cash
document.addEventListener('DOMContentLoaded', function() {
$('.new-btn').on('click', () => {
console.log('Новый функционал');
});
});
.closest() и .parents() поддерживаются, но без
дополнительных фильтров.data-* через .data(), но не кэширует их в
объекте jQuery.$.Deferred. Для асинхронной логики используется стандартный
Promise.Стратегия постепенной миграции позволяет минимизировать риски и сохранить стабильность приложения, одновременно снижая вес и повышая производительность за счёт замены jQuery на лёгкую библиотеку Cash.