Ответ
Плюсы:
- Простота использования: легкая реализация коммуникации между компонентами
- Гибкость: можно передавать данные между любыми частями приложения
- Декомпозиция: уменьшает связанность компонентов
Минусы:
- Сложность отладки: трудно отследить цепочку событий
- Потенциальные утечки памяти: нужно явно отписываться от событий
- Неявные зависимости: сложно понять, кто и на какие события подписан
// Пример реализации простого EventBus
class EventBus {
constructor() {
this.listeners = {};
}
on(event, callback) {
if (!this.listeners[event]) {
this.listeners[event] = [];
}
this.listeners[event].push(callback);
}
emit(event, data) {
(this.listeners[event] || []).forEach(cb => cb(data));
}
off(event, callback) {
this.listeners[event] = (this.listeners[event] || [])
.filter(cb => cb !== callback);
}
}
Лучше использовать для простых проектов или как временное решение. В крупных приложениях предпочтительнее state-менеджеры.