Dom7 представляет собой лёгкую библиотеку для манипуляции DOM и работы с событиями, вдохновлённую jQuery, но оптимизированную для современных браузеров и мобильных интерфейсов. Структура API близка к привычной модели jQuery, при этом отсутствуют устаревшие части и громоздкие абстракции. Основные преимущества при переходе: компактный размер, высокая скорость, интеграция с UI-фреймворками, минимальная зависимость от среды выполнения.
Сходства:
Различия:
Вместо $() применяется функция $$().
Возвращаемый объект похож на jQuery-коллекцию. Пример выборки
элементов:
const items = $$('.item');
items.addClass('active');
API Dom7 не стремится к совместимости с каждым специфическим случаем jQuery; ожидается корректный современный DOM, доступный без полифилов.
Методы append, prepend, html,
text, css работают в привычной манере. В
отличие от jQuery, некоторые операции более строго опираются на нативные
свойства. Например, css не выполняет автоматическую
конвертацию единиц или вычислений; передаются итоговые значения:
$$('.box').css({
width: '100px',
height: '50px'
});
Добавление элементов в документ:
const el = $$('<div class="row">Текст</div>');
$$('.container').append(el);
Dom7 минимизирует внутреннюю магию и предпочитает прозрачное использование уже существующих DOM-механизмов.
Методы attr, removeAttr,
addClass, removeClass,
toggleClass, hasClass имеют прямые аналоги в
jQuery, что облегчает миграцию. Важно учитывать, что обработка
специальных атрибутов не дополняется вспомогательной логикой; если
требуется расширенное поведение, его добавляют вручную.
Событийная модель Dom7 опирается на on, off
и once. Поддерживаются пространства имён и делегирование
через селекторы. Пример делегирования:
$$('.list').on('click', '.item', (e) => {
$$(e.target).toggleClass('selected');
});
В отличие от jQuery, отсутствуют устаревшие шорткаты
(.click(), .hover() и т. д.), что упрощает API
и исключает скрытые различия в поведении.
Dom7 намеренно не включает аналог $.ajax, а также
отсутствуют функции для JSONP и сериализации форм. Предполагается
использование нативных средств (fetch,
FormData, URLSearchParams) или сторонних
утилит. Такой подход снижает вес библиотеки и заставляет использовать
современные API браузера без прослойки.
Анимации отсутствуют как отдельная подсистема. Предполагается использование CSS transitions и CSS animations либо Web Animations API. Это отличает Dom7 от jQuery, где исторически присутствовал модуль эффектов.
Цепочки методов работают аналогично jQuery, но в Dom7 отсутствует необходимость в дополнительных контекстах или deferred-объектах. Возвращаемая коллекция всегда является «живой» ссылкой на элементы. Ошибки, связанные с отсутствием элементов, не подавляются; вызов методов на пустой коллекции просто приводит к отсутствию эффекта.
Расширение Dom7 выполняется через прототип функции-обёртки. Пример добавления метода:
Dom7.fn.highlight = function() {
this.css('background', 'yellow');
return this;
};
Отсутствие плагинного реестра и стандартов jQuery компенсируется простотой. Реализация дополняющих функций строится вокруг прямого DOM и не опирается на внутренние механизмы.
Миграция проектов с jQuery чаще всего складывается из нескольких
этапов: замена селекторов, обновление манипуляций DOM, отказ от
$.ajax в пользу fetch, перенос логики анимаций
на CSS. Несмотря на отсутствие некоторых удобств jQuery, переход снижает
размер фронтенда и повышает совместимость с современными браузерами.
Dom7 используется в экосистеме Framework7 и ориентируется на мобильные интерфейсы. Благодаря этому API изначально оптимизирован для сред, где критична производительность и минимальный объём кода. В отличие от jQuery, который долгое время играл роль унифицированного слоя между браузерами, Dom7 предполагает современную платформу без легаси-ограничений.
В проектах, опирающихся на старые версии jQuery или плагины, переход потребует замены значительной части экосистемы. В проектах, написанных с прицелом на современные браузеры и мобильные UI, Dom7 уменьшает зависимость от общих утилит и не затрудняет интеграцию с нативными API. Такое смещение акцентов отражает текущую эволюцию фронтенда: меньше абстракций ради универсальности и больше прямой работы с платформой.