@Mark321

Для чего нужен eventemitter?

Делаю тестовое задание
Задание на MVC+eventemitter реализовать не большое приложение
я его сделал, на функциях, сейчас пытаюсь переписать на мвс+евентимиттер, ибо никогда в таком стиле код не писал, то тяжело
я не понимаю зачем в этой схеме евентимиттер
я нашел несколько примеров кода на гитхабе, но все по-разному делают
Может кто-то в двух словах может доступным языком объяснить зачем и для каких целей используется eventemitter исключительно в контексте клиентской части(mvc подохода)
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
alexbaum
@alexbaum
JS-разработчик, наставник.
Подход "Подписчик-Издатель" (EventEmmiter) нужен для разделения частей приложения на независимые модули.

Например, нужно показывать на странице сколько товаров в корзине.

Подход с вызовом функций:

const renderCart(count) {
  $('#cart').text(count);
}

const renderFooterNavCart(count) {
  $('.footer .cart').text(count);
}

const addToCartHandler() {
  const count = $('.footer .cart').text() + 1;

  renderCart(count);
  renderFooterNavCart(count);

  // Если добавится еще виджет с отображением количества товаров в корзине —
  // нужно найти этот обработчик и добавить сюда функцию отрисовки
}


Подход "Подписчик-Издатель":

const renderCart(count) {
  $('#cart').text(count);
}

const renderFooterNavCart(count) {
  $('.footer .cart').text(count);
}

const addToCartHandler() {
  const count = $('.footer .cart').text() + 1;

  emitEvent('cartCountCanged', count)
}

subscribe('cartCountCanged', (count) => {
  renderCart(count);
  renderFooterNavCart(count);
})

// Если добавится еще виджет с отображением количества товаров в корзине —
// вызвать 

subscribe('cartCountCanged', (count) => {
  // виджет(count)
}

// в любом месте приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы