🎋 竹子日誌

關於事件匯流排

JavaScript 是一個 Event Drive 的程式語言,大量底層實作都會利用 Pub, Sub pattern 去設計一些邏輯實作。對於單掛載事件則是使用 callback 來達到相似的結果。經典的案例是 EventTarget,大量的網頁實作都用到,後來為了可以兼容 Pure JavaScript ,實作了 EventEmitter 。

事件這個設計對於解耦有著無比強大的特性,大部分你所看到的各種 Callback 都可以仰賴 Event 重新封裝達到相似的結果。事件也不會慢一個 Event loop queue ,可以自由封裝並達到一致或不同的結果。雙重事件相疊也可以做到相似於同步的 Promise 效果,可以說是非常好用。

然而,我發現多數前端非常不喜歡應用 Event 這個設計,甚至不少資深前端還「反感」這個設計。認為「多餘」、「複雜」、「難維護」。但我覺得這是封裝特性問題,並不是不好。

你呢?怎麼看 Event Bus?

留言