Совместимость версий

Bliss.js представляет собой лёгкую библиотеку для работы с DOM, упрощающую доступ к элементам, управление событиями и работу с атрибутами. Несмотря на компактность и простоту, вопросы совместимости версий требуют внимательного изучения, так как изменения API могут повлиять на поведение существующего кода.


Основные принципы совместимости

Обратная совместимость является ключевым аспектом при выпуске новых версий Bliss.js. Библиотека стремится не нарушать работу старого кода, но иногда изменения неизбежны. Основные принципы:

  • Мажорные версии (major) обозначают изменения, которые могут ломать существующий код. Используются новые подходы к API или удаление устаревших методов.
  • Минорные версии (minor) добавляют новые возможности, не нарушая существующие. Добавление методов или расширение функциональности является типичным примером.
  • Патч-версии (patch) исправляют ошибки, оптимизируют производительность и не влияют на API.

Следует проверять документацию при обновлении на новую мажорную версию, чтобы выявить возможные несовместимости.


Совместимость с браузерами

Bliss.js ориентирован на современные браузеры, однако каждая версия поддерживает минимальный набор:

  • IE9+ поддерживается лишь частично, с ограничениями на некоторые методы.
  • Chrome, Firefox, Edge, Safari – полная поддержка функций библиотеки.
  • Мобильные браузеры – поддерживаются актуальные версии iOS Safari и Android Chrome.

Важно учитывать, что методы для работы с атрибутами, событиями и классами могут иметь нюансы при старых версиях браузеров.


Работа с методами и свойствами

Bliss.js использует удобные цепочки методов, что облегчает манипуляции с DOM. Некоторые изменения API между версиями могут затрагивать:

  1. Методы выборки элементов

    • $$() – выбор множества элементов. В новых версиях возвращает массив вместо NodeList, что упрощает работу с массивными методами (map, filter).
    • $(selector) – выбор одного элемента. В старых версиях возвращался элемент напрямую, в новых поддерживается возврат null при отсутствии совпадений.
  2. Управление событиями

    • Методы .on() и .off() могут принимать дополнительные параметры для делегирования событий.
    • С версии 3.x изменена обработка событий mouseenter и mouseleave, чтобы исключить баги в старых браузерах.
  3. Атрибуты и свойства

    • .attr() поддерживает как чтение, так и запись атрибутов. В версии 2.x устарели методы setAttr и getAttr.
    • .prop() теперь строго работает с DOM-свойствами, предотвращая конфликты с атрибутами.

Управление классами

Bliss.js реализует удобные методы для работы с CSS-классами:

  • .addClass(), .removeClass(), .toggleClass() – ключевые методы для управления стилями.
  • В версии 3.x добавлена поддержка нескольких классов через пробел, что улучшает читаемость кода.
  • Методы стали более оптимизированными для работы с SVG-элементами, что раньше требовало обходных решений.

Совместимость с другими библиотеками

Bliss.js разработан так, чтобы минимально конфликтовать с другими фреймворками:

  • Методы не вмешиваются в глобальные объекты window и document.
  • Нет конфликта с jQuery или другими DOM-библиотеками, если не использовать глобальный $ как синоним.
  • Совместимость зависит от версии ECMAScript: ES5+ обеспечивает работу всех стандартных функций.

Рекомендации при обновлении версий

  • Проверять, какие методы были удалены или изменены между версиями.
  • Тестировать существующие цепочки вызовов на небольших фрагментах кода.
  • Использовать модульную структуру, чтобы при необходимости заменить только часть функционала.
  • При необходимости сохранить старое поведение использовать локальные полифиллы или обёртки вокруг новых методов.

Примеры потенциальных несовместимостей

  • Изменение возвращаемого типа $$(): в версии 1.x метод возвращал NodeList, в версии 3.x – массив. Старый код с .forEach может работать иначе.
  • Изменение поведения .on(): старый код с делегированием через false для useCapture может требовать корректировки.
  • Удаление устаревших методов: getAttr и setAttr полностью удалены в последних версиях, заменены .attr().

Итоговые моменты

Совместимость Bliss.js строится на строгом разделении мажорных и минорных изменений. Тщательная проверка документации, тестирование кода и внимание к деталям API позволяют безопасно обновлять библиотеку и использовать все её возможности без нарушения существующего функционала.