Ответ
EventBus — это паттерн проектирования, который позволяет компонентам обмениваться событиями без прямых ссылок друг на друга. Это особенно полезно в сложных приложениях, где компоненты находятся на разных уровнях иерархии.
Как работает:
- Компоненты подписываются на события (
on
) - Другие компоненты публикуют события (
emit
) - EventBus перенаправляет события подписчикам
Пример на Vue.js:
// Создание EventBus
const EventBus = new Vue();
// Подписка
EventBus.$on('user-logged-in', (user) => {
console.log(`User ${user.name} logged in`);
});
// Публикация
EventBus.$emit('user-logged-in', { name: 'John' });
Плюсы:
- Уменьшает связность компонентов
- Упрощает коммуникацию между несвязанными компонентами
Минусы:
- Может усложнить отладку
- Риск утечек памяти, если не отписываться