Flux是一種前端應用架構,它的誕生是為了解決MVC模式下,隨著專案越來越大,資料流動方式十分混亂的缺點。
Flux的核心思想是資料和邏輯永遠是單向流動的,由三部分組成:
1、dispatcher 負責分發事件
2、store 負責儲存資料,同時相應事件並更新資料
3、view 負責訂閱store中的資料,並使用這些資料渲染相應的頁面
優點:即在view層,通過dispatcher接受action的資料,然後再命令store進行相應的資料變更同時更新view,整個流程當中,資料始終在單向流動。store裡資料的變更只能通過dispatch來修改,強化資料修改的純潔性
缺點:Flux的冗餘程式碼太多,每個應用中都需要手動建立一個dispatcher的例項,而且在一個應用中含有多個store。
Redux和Vuex都是基於Flux的思想實現的
Redux和Flux的區別
1、Redux中只有一個store,而Flux中有多個store來儲存應用資料,並在store裡面執行更新邏輯,當store變化的時候再通知controller-view更新自己的資料,Redux是將各個store整合成一個完整的store,並且可以根據這個store來得到完整的state,而且更新的邏輯也不再store中,而是在reducer(採用純函式)中。
2、Redux沒有Dispatcher這個概念。它使用的是reducer來進行事件的處理,reducer是一個純函式(preState, action) => newState
,在Redux應用中,可能有多個reducer,每一reducer來負責維護應用整體state樹中某一部分,多個reducer通過combineReducers
方法合成一個根reducer,來維護整個state