Устаревшие методы

Bliss.js предоставляет удобный набор утилит для работы с DOM, событиями и асинхронными операциями, однако с развитием библиотеки и стандарта JavaScript некоторые методы стали устаревшими. Использование устаревших методов может привести к проблемам совместимости и снижению производительности, поэтому важно понимать их назначение и альтернативы.


B.events и устаревшие синтаксисы событий

Метод B.events изначально использовался для привязки событий к элементам:

B.events(document.body, 'click', function() {
    console.log('Клик по body');
});

Старый синтаксис поддерживал строку с несколькими событиями через пробел:

B.events(document.body, 'click mouseover', function() {
    console.log('Клик или наведение');
});

Проблемы устаревшего подхода:

  • Нет поддержки современных стандартов делегирования событий.
  • Сложности с удалением конкретного обработчика при множественных событиях.
  • Использование строковых списков событий увеличивает риск опечаток и ошибок.

Современная альтернатива: использование B.on и массивов событий:

B.on(document.body, ['click', 'mouseover'], function() {
    console.log('Клик или наведение');
});

B.ajax без промисов

Ранее для работы с AJAX Bliss.js предоставлял метод B.ajax, который возвращал объект с колбэками success, error, complete:

B.ajax({
    url: '/data',
    method: 'GET',
    success: function(res) { console.log(res); },
    error: function(err) { console.error(err); }
});

Недостатки устаревшего подхода:

  • Не поддерживает современный синтаксис async/await.
  • Ограниченные возможности цепочек и обработки ошибок.
  • Сложно комбинировать несколько AJAX-запросов.

Современная альтернатива: использование B.fetch, которая возвращает промис:

B.fetch('/data')
 .then(res => res.json())
 .then(data => console.log(data))
 .catch(err => console.error(err));

Методы манипуляции DOM

Ряд методов для работы с классами и атрибутами также устарел:

  • B.addClass(element, 'className') → устарел, заменен на element.classList.add().
  • B.removeClass(element, 'className') → устарел, заменен на element.classList.remove().
  • B.toggleClass(element, 'className') → устарел, заменен на element.classList.toggle().

Использование нативных методов повышает читаемость кода и снижает зависимость от библиотеки.

Пример устаревшего кода:

B.addClass(el, 'active');
B.toggleClass(el, 'highlight');

Современный подход:

el.classList.add('active');
el.classList.toggle('highlight');

Устаревшие селекторы

Bliss.js предлагал метод B.$ для поиска элементов:

var items = B.$('.item');

Старый метод возвращал коллекцию, которая не поддерживала стандартные методы массива.

Современная практика — использовать B.all или нативные методы:

var items = B.all('.item'); // возвращает массив
items.forEach(el => console.log(el.textContent));

Преимущества нового подхода:

  • Возвращает полноценный массив, совместимый с методами map, filter, reduce.
  • Позволяет использовать современный синтаксис перебора элементов.

Методы работы с атрибутами

Ранее применялись методы B.attr и B.removeAttr:

B.attr(el, 'data-id', '123');
B.removeAttr(el, 'data-id');

Недостатки:

  • Меньшая совместимость с нативным DOM API.
  • Сложности с динамическими атрибутами и dataset.

Современный вариант:

el.setAttribute('data-id', '123');
el.removeAttribute('data-id');

Для dataset:

el.dataset.id = '123';
delete el.dataset.id;

Работа с классами и стилями через устаревшие методы

Bliss.js предлагал методы B.css и B.hide/B.show:

B.css(el, 'display', 'none');
B.show(el);

Недостатки устаревшего подхода:

  • Не поддерживает сложные вычисления стилей.
  • Не интегрируется с CSS-переменными и современными свойствами.

Современный вариант — использовать style напрямую:

el.style.display = 'none';
el.style.setProperty('--main-color', '#ff0000');

Итоговые рекомендации по устаревшим методам

  • События: переход на B.on и массивы событий вместо строковых списков.
  • AJAX: использовать B.fetch с промисами вместо старого B.ajax.
  • DOM-классы: применять classList вместо методов Bliss.js для классов.
  • Селекторы: использовать B.all или querySelectorAll с преобразованием в массив.
  • Атрибуты: setAttribute/removeAttribute и dataset вместо B.attr.
  • Стили: использовать нативное свойство style вместо B.css, B.show и B.hide.

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