Ch3 事件導向架構 (Event-Based Architectures) | 可測試的 JavaScript (Testable JavaScript)

JavaScript 是「事件導向」的程式語言

如下圖,使用者與 UI (在瀏覽器內) 互動,瀏覽器即是 event listener,負責做監聽動作。因此當使用者做了一些事情後,瀏覽器便會通知特定的監聽者做出反應。

事件導向架構

緊密耦合

事件導向架構

事件集線器 (Event Hub)

事件集線器

如上圖,方法 1 ~ 5 對事件集線器註冊,當有物件呼叫的時候,事件集線器監聽到有人呼叫,就分配對應的方法來做處理。

這樣利用物件呼叫傳入 callback 的方式來呼叫方法,就無共享變數的狀況,也就沒有緊密耦合的問題。

回應丟出的事件

事件集線器回應的三種方式

事件導向架構與 MVC 作法

不同點在於

事件導向架構與物件導向程式設計 (OOP)

OOP 有繼承耦合的問題

相較事件導向架構,由於元件都是 private,且唯一的溝通管道是透過事件集線器的 API,無耦合問題。

事件導向架構與軟體即服務 (SaaS)

在 SaaS 環境中,適合使用事件導向架構

事件導向架構與軟體即服務 (SaaS)

Web 應用程式

測試事件導向架構

呼叫實作動作的函式

呼叫實作動作的函式

事件導向架構注意事項

較聰明的集線器:事件交換器

節省網路頻寬、程式部署。

佈署

升級應用程式的一部份,只需要更新和部署單一模組,不漏失處理任何要替換的事件。

Event Hub + Jest

Event Hub ExampleDemo

本章重點回顧

其他補充


可測試的 JavaScript 單元測試 自動化測試 OOP VSCode Testable JavaScript javascript Unit Test 物件導向程式設計 讀書會 閱讀筆記