Создание системы событий в vanilla JavaScript
Сейчас работаю над клиентским приложением и думаю о том, как лучше организовать систему событий. Можно написать свою собственную реализацию event bus с нуля, это не особо сложно.
Но вот интересно - стоит ли использовать встроенные возможности DOM для обработки событий и CustomEvent
для создания шины событий приложения? Какие плюсы это может дать по сравнению с самописным решением?
Возможно, кто-то уже пробовал оба подхода и может поделиться опытом? Интересуют производительность, удобство использования и общая архитектура.
CustomEvent хорош тем, что браузер уже всё оптимизировал за тебя - не надо из reinventing the wheel. Отладка через DevTools тоже проще. Но если событий много, может быть overhead - каждый раз создается полноценный Event объект. Я использую CustomEvent для крупных компонентов, а для мелочей типа состояния делаю простой observer паттерн.
Почему бы не смешать оба подхода? Для UI можно использовать события DOM, а для бизнес-логики создать свою шину событий. Основной минус CustomEvent в том, что он привязан к дереву DOM, что не очень удобно для чисто логических событий. Какое приложение ты разрабатываешь?