2015年11月7日 星期六

Redux = 事件驅動系統 = 伺服器

Redux 做的事情其實很簡單 ( 主程式才99行 ),就是可客制 Event 的 Event System。這概念在別的領域已經很成熟。但因為 Redux 的目標使用者是 Flux 的使用者,套用了很多原來 Flux 裡的專有名詞,所以對非 Flux 使用者變得很難懂。這邊透過類比大家都知道的名詞,目標讓 Redux 的概念連六歲小孩都能理解。

Flux:

Actions trigger reducer to update states in the store.


Redux 的行為等於事件驅動系統 ( Event-driven System ) / 有限狀態機 ( FSM ):

Events trigger event handler to update states in the machine.

Action Event | Signal | Message
Reducer Event Handler | Finite State Machine 中的 transducer


Redux 的行為等於一個網頁伺服器:

When a request came, using route table mapping to get a method to process it。

Action Http Request
Store.dispatch(Action) 送 Request 到 Server
Reducer Router 把 Request 送到對應的 Router Method,更新 Database
Store Database
UI / React Http Response


Redux的行為等於巷口那家... 哎 想不出來比較生活的說法。

現在有沒有覺得 Redux 很 Awesome?好像沒有啊... 但我們回到瀏覽器的環境重新看一下,因為 HTML 的元件很小,開發者會組合 HTML元件成為可重複使用的「大元件」。但問題是瀏覽器中的 「事件處理系統」 是針對 HTML 小元件的,沒有給「大元件」的。於是Redux 提供了給開發者可以自行定義事件的「大元件」事件處理系統,因為你可以控制整個事件處理系統,重播和紀錄事件都變成毫不費力的事。現在又感覺到  Redux 很 Awesome了吧!!!

故事到了這邊,一定會想這樣解說,哪個六歲小孩能了解啊,相信這是大家共同的疑惑,不過 「投資一定有風險,基金投資有賺有賠,申購前應詳閱公開說明書」,我會反省的...

---

延伸閱讀:
redux 的專有名詞解釋
Redux Issue 891:Is redux conflating actions with events?
六歲小孩也能懂的 Javascript Closure 說明

沒有留言:

張貼留言