Cash — это лёгкая библиотека, созданная как облегчённый аналог jQuery, предоставляющая удобный интерфейс для работы с DOM-элементами, событиями и AJAX-запросами. Основная идея Cash — минимизация веса и высокая производительность, сохраняя привычный синтаксис для разработчиков, знакомых с jQuery.
Cash можно подключить как через CDN, так и локально. Пример подключения через CDN:
<script src="https://cdn.jsdelivr.net/npm/cash-dom/dist/cash.min.js"></script>
После подключения библиотека доступна через символ $,
аналогично jQuery.
$(document).ready(() => {
console.log('DOM полностью загружен');
});
Cash использует CSS-селекторы для поиска элементов в DOM:
const items = $('.item'); // все элементы с классом "item"
const header = $('#header'); // элемент с id "header"
const paragraphs = $('p'); // все параграфы
Возвращаемый объект поддерживает цепочки методов, что позволяет производить множественные манипуляции без повторного обращения к DOM.
Изменение текста и HTML:
$('.item').text('Новый текст'); // заменяет текстовое содержимое
$('.item').html('<strong>Жирный текст</strong>'); // заменяет HTML-контент
Работа с атрибутами:
$('.link').attr('href', 'https://example.com'); // установка атрибута
const href = $('.link').attr('href'); // чтение атрибута
$('.input').val('Текстовое значение'); // установка значения input
const inputValue = $('.input').val(); // чтение значения input
Стили и классы:
$('.item').addClass('active'); // добавить класс
$('.item').removeClass('inactive'); // удалить класс
$('.item').toggleClass('highlight'); // переключить класс
$('.item').css('color', 'red'); // установка CSS-свойства
Cash позволяет удобно работать с событиями:
$('.button').on('click', (event) => {
console.log('Кнопка нажата');
});
$('.input').on('input', (event) => {
console.log(event.target.value);
});
$(document).ready(() => {
console.log('DOM готов');
});
Можно удалять обработчики:
$('.button').off('click');
Cash поддерживает методы навигации по DOM-дереву:
const parent = $('.item').parent(); // родительский элемент
const children = $('.container').children(); // все дочерние элементы
const nextElem = $('.item').next(); // следующий соседний элемент
const prevElem = $('.item').prev(); // предыдущий соседний элемент
Методы find, siblings, closest
позволяют гибко перемещаться по дереву и выбирать элементы по
селекторам.
Cash предоставляет простые методы для анимации видимости элементов:
$('.item').hide(); // скрыть
$('.item').show(); // показать
$('.item').toggle(); // переключить видимость
Для плавных переходов можно использовать метод fade и
slide:
$('.item').fadeOut(500); // исчезновение за 500 мс
$('.item').fadeIn(500); // появление
$('.item').slideUp(300); // слайд вверх
$('.item').slideDown(300); // слайд вниз
Cash включает упрощённый API для AJAX:
$.get('https://api.example.com/data', (response) => {
console.log(response);
});
$.post('https://api.example.com/save', { key: 'value' }, (response) => {
console.log(response);
});
Метод $.ajax поддерживает более детальную настройку:
$.ajax({
url: 'https://api.example.com/data',
method: 'GET',
dataType: 'json',
success: (response) => console.log(response),
error: (err) => console.error(err)
});
Sanitization в контексте работы с Cash — это процесс безопасного получения и отображения данных от пользователей без риска XSS. Основные подходы:
Экранирование HTML:
function escapeHTML(str) {
return str.replace(/[&<>"']/g, (match) => {
const escape = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return escape[match];
});
}
const userInput = '<script>alert("XSS")</script>';
$('.output').html(escapeHTML(userInput)); // безопасное отображение
Использование text вместо
html:
$('.output').text(userInput); // автоматически экранирует HTML
Валидация и фильтрация:
Для ввода чисел или ограниченных строк:
const sanitized = userInput.replace(/[^a-zA-Z0-9 ]/g, ''); // оставляем только буквы, цифры и пробелы
В сочетании с методами Cash это позволяет безопасно обновлять DOM без угрозы внедрения вредоносного кода.
Cash оптимизирован для работы с небольшими и средними проектами. Рекомендуется минимизировать частые манипуляции с DOM внутри циклов, группируя изменения:
const container = $('.container');
const fragment = document.createDocumentFragment();
for (let i = 0; i < 100; i++) {
const div = document.createElement('div');
div.textContent = `Элемент ${i}`;
fragment.appendChild(div);
}
container.append(fragment); // однократная вставка вместо 100 раз
$().text() вместо $().html()
при выводе пользовательских данных.$ .get, $ .post или $ .ajax с
обработкой ошибок.Cash предоставляет мощный и компактный набор инструментов, позволяющий быстро манипулировать DOM и безопасно работать с пользовательским вводом, сохраняя легкость и читаемость кода.