Cash — это легковесная JavaScript-библиотека, вдохновлённая jQuery, обеспечивающая удобный и компактный интерфейс для работы с DOM. Она предназначена для ускорения операций с элементами страницы, предоставляя цепочки вызовов и оптимизированные методы манипуляции, минимизирующие количество обращений к DOM.
Основное преимущество Cash заключается в том, что большинство операций с DOM выполняются внутри виртуального контекста, что позволяет уменьшить количество перерисовок и пересчёта стилей.
Метод выбора элементов в Cash аналогичен jQuery:
const items = cash('.item');
cash() возвращает объект, содержащий выбранные элементы,
на который можно сразу применять методы библиотеки. Выборка элементов не
создаёт копий DOM-узлов, а работает с существующими объектами, что
снижает нагрузку на браузер.
Ключевой момент: повторные обращения к DOM через cash() создают новый объект коллекции, но не дублируют элементы страницы.
const listItems = cash('li');
listItems.addClass('highlight'); // изменение напрямую на выбранных элементах
Cash предоставляет удобные методы для манипуляции классами:
addClass(className) — добавляет класс;removeClass(className) — удаляет класс;toggleClass(className) — переключает класс;hasClass(className) — проверяет наличие класса.Все методы работают пакетно, т.е. один вызов применяется ко всей коллекции элементов, что минимизирует количество обращений к DOM.
Пример:
cash('button').addClass('active').attr('disabled', true);
Здесь выполняются два действия сразу: добавление класса и установка
атрибута disabled для всех кнопок. Cash объединяет эти
операции в цепочку без лишних перерисовок страницы.
Методы html(), text(),
append(), prepend() позволяют эффективно
управлять содержимым:
html(content) — получает или задаёт
HTML-содержимое;text(content) — работает с текстом;append(element) / prepend(element) —
добавляют новые элементы внутрь выбранных узлов.Cash минимизирует множественные обращения к innerHTML за счёт пакетной обработки коллекции элементов:
cash('ul').append('<li>Новый элемент</li>');
В этом примере все выбранные <ul> получают новый
<li> без необходимости обходить их вручную.
Методы работы с событиями обеспечивают удобство и снижение нагрузки на DOM:
on(event, handler) — добавляет обработчик события;off(event, handler) — удаляет обработчик;trigger(event) — инициирует событие.Cash хранит внутреннюю карту обработчиков, что позволяет отслеживать и управлять событиями без дублирования слушателей:
cash('button').on('click', () => {
console.log('Нажата кнопка');
});
Для удаления:
const handler = () => console.log('Нажата кнопка');
cash('button').on('click', handler);
cash('button').off('click', handler);
Метод css() позволяет работать с CSS-свойствами как
индивидуально, так и пакетно:
cash('div').css({
'background-color': 'blue',
'color': 'white'
});
Cash напрямую применяет стили к элементам без промежуточных операций с классами, что уменьшает количество вызовов reflow и repaint.
Методы attr(), removeAttr(),
prop(), removeProp() предоставляют точный
контроль над атрибутами и свойствами:
cash('input[type="checkbox"]').attr('checked', true);
cash('input[type="checkbox"]').removeAttr('checked');
Cash выполняет эти операции пакетно, обходя коллекцию элементов всего один раз.
Методы append(), prepend(),
after(), before(), remove(),
empty() позволяют манипулировать DOM без лишних
вызовов:
cash('#container').empty(); // очищает все дочерние элементы
cash('#container').append('<p>Новый параграф</p>');
Каждый метод оптимизирован для минимизации перерисовки: операции выполняются внутри одной коллекции элементов, что снижает нагрузку браузера.
addClass, css, append) вместо
циклов с прямым доступом к DOM.Эти принципы позволяют добиться высокой производительности и уменьшить количество дорогостоящих обращений к DOM при работе с динамическим контентом.