Функционал JS. Шина событий – купить за 1 сом КР | InSales.kg платформа управления онлайн продажами

Функционал JS. Шина событий

Важным аспектом работы JS каркаса является шина событий

Она предназначена для простого взаимодействия базового функционала с остальными скриптами, не привязываясь при этом к верстке.

Работает по принципу Pub/Sub (Издатель / Подписчик ) и построена на Deferred, что позволяет

  • привязать к одному событию (Издателю) несколько обработчиков (Подписчиков)
  • обработчики событий сработают, даже если событие произошло раньше того, как мы к нему привязали обработчик.
  • не важен порядок объявления Издателя и Подпсичиков

Работа с шиной производится через объект Events

Отправка сообщения в шину.

Events( event_name ).publish( data );

event_name - имя события, к которое ожидают Подписчики

data - объект с данными, которые нужно передать

Подписка на событие

Events( event_name ).subscribe( function( data ){
// code
});

Возвращаемые данные

Любое событие возвращает объект, который содержит информацию о текущем состояния Издателя.

Пример

Корзина вернет свой состав и дополнительную информацию о скидке, доставке и пр.

Так же может содержать дополнительные поля, которые зависят от типа задач, которые были сделаны в Издателе.

Пример

После добавления товара в корзину, в ответе будет поле added, с информацией о добавленных товарах

Так же в ответе может быть дополнительное поле jqObj, в котором находится jQuery-объект элемента сайта.

Пример.

Пример обработчиков

В данном примере мы подписались на событие обновления корзины.

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

Первый - обновляет информацию только в виджете корзины.

Второй - обновляет общую стоимость заказа на странице корзины. Важно учесть, что данная функция для большинства страниц магазина не нужна. Чтобы ее использовать только там, где она нужна, мы оборачиваем подписку данного слушателя в условие, и подключаем только на странице корзины.

Такое разделение функционала на несколько подписчиков дает

  1. возможность гибко изменять функционал конкретной темы
  2. легко адаптировать конкретные фрагменты кода под нужды клиента
  3. если у нас сломался какой-то фрагмент кода, то это отразится только на нем. Например, если что-то пойдет не так с виджетом корзины, то это не скажется на работе корзины и пересчете общей стоимости на странице корзины

Оставить оценку

Оценка успешно отправлена.
Она будет проверена администратором перед публикацией.
Перед публикацией все оценки проходят модерацию

Оценки: 0

Остались вопросы?
Отправь тикет в техподдержку!
Еще нет своего магазина?
Создайте интернет-магазин на платформе InSales
Всё для продаж уже внутри!
Недавно просмотренные статьи