如何通俗易懂地解釋 Redux 和 Flux 的區別和實現意義?


redux 實現了 state 和 reducer 的分離,而不是共同的雜糅於 store 中,redux 只有一個 state(store.getState()),並且 state 是只讀,每次修改生成新的版本

於是就可以實現 time travel 的開發體驗,可以旅行到任意版本的數據,並且由於有 hot reload 這種機制,後端修改 reducer 實現,瀏覽器可以準確替換而不影響 store 對象和數據,開發不用重複操作 use case,效率上有了不小的提升,另外一方面是便於 server render,更進一步實現同構。


Redux是一個友好簡潔的flux模式的實現

意義:實現前後端同構,更好組織UI組件事件分發

然而,對我來說用Redux只是看上React的函數式編程,實際業務實踐更偏愛Vue.js


圖源:GitHub - kenberkeley/redux-simple-tutorial: Redux 莞式教程。本教程深入淺出,配套入門、進階源碼解讀以及文檔注釋豐滿的 Demo 等一條龍服務


Redux:受Flux啟發的一種架構風格

如何理解 Facebook 的 flux 應用架構? - 前端開發


React是數據驅動式的UI component體系,是一個開放的數據依賴式,非自閉OO對象。它會有以下挑戰

  1. render方法可能很大,component顯示邏輯是一次性在render里實現的。這裡往往有兩部分邏輯實現,初次數據綁定,與用戶交互之後的演算法。
  2. render出一個ReactElement樹,但這個樹中的一些組件、UI元素因為計算被前移了,這會導致這個樹看起來不太完整,進而不太直觀。
  3. 雖然可以分解成小的component,構建大的Component可能是個挑戰,因為所有邏輯都依賴於外部數據,而外部數據相對不穩定,組件失去了自我邊界的保護,非自閉。
  4. 當交互複雜,組件的state也會越來越大,render全局演算法會越來越難寫。
  5. 把子組件的行為傳上來也是一件不顯化的事,往往需要把父組件的一個函數作為回調傳給子組件。
  6. 大組件往往有多個Page,這幾個Page如何交換數據是個很大的挑戰


推薦閱讀:

vue-router源碼分析-整體流程
如何評價Medium文章【為什麼Angular太小太晚】?

TAG:前端開發 | 前端入門 | 前端框架 |