什麼是 Flux?

一個現代前端框架的不可或缺的觀念。

簡述

Flux 是一種「管理狀態的架構」。

在 Flux 推出之前,其實每個框架或是 library 都有各自管理狀態的方式:

  • 在 jQuery 是「直接去改變畫面」
  • 在 React 是「單向資料流」(只管 state)
  • 在 Angular 或 Vue 是「雙向綁定」(改畫面 or 改資料)

然而當專案越來越大時,狀態管理就會變得越複雜,單靠原本的方式其實會有一些問題,所以臉書後來就推出了 Flux 這套架構來解決。

想知道臉書當時碰到什麼問題跟 Flux 更多的細節可以參考這部影片

總之呢,以 React 來說,我們原本在操作 state 的方式是這樣子:

view 點了某個按鈕 -> 更新 state -> view 收到新的 state

附註:view 指的就是 React,畢竟它本來就把自己定義成一個 UI 庫。

而變成 Flux 以後的流程是:

view 點了某個按鈕 -> dispatch 一個 action -> store 裡的 reducer 根據 action 回傳新的 state -> view 收到新的 state

看起來多了一大堆繁瑣的步驟,但這樣子做其實是有原因的,可以先參考下面這兩張圖:

1. MVC 架構下的流程

mvc

2. Flux 架構下的流程

flux

簡單來說,在 MVC 裡面任何人都可以隨便去改 state,但在 Flux 下就不行了,不管要做什麼得透過 action + dispatch 來做。

在沒有採用 Flux 這種架構時,要追蹤問題點會很困難,因為大家都可以直接去改 state,就會很難知道是誰改的?什麼時候改的?

但是當採用了 Flux 以後,要追蹤 bug 時就能有一個直接的線索,像是「某個 action 是從哪個 view 發出的?」或是「state 是被哪個 action 改的?」等等。

所以這也是為什麼後來臉書會採用 Flux 的原因,其實回歸到原點還是為了管理狀態而已。

初探 Redux JavaScript 還不錯用的 set
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×