2015-03-02 63 views
35

Flux + React比Backbone + React有什麼優勢?除了龐大複雜的代碼庫的代碼開發緩解之外,是否還有任何性能差異。Flux + React vs Backbone + React

如果模型與使用Backbone + React的應用程序中的反應視圖之間存在1:1的關係,該怎麼辦?

回答

41

通量是建築師圖案來構建應用程序作出反應。因此,您可以在商店內使用Backbone模型和集合來獲取和存儲數據。

如果只想使用React的虛擬DOM功能,則不需要使用react.js。有很多庫,將虛擬DOM功能添加到您的應用程序(https://github.com/Matt-Esch/virtual-dom)。

我的建議:如果你會用流量模式,我強烈建議你使用http://facebook.github.io/immutable-js/(可與http://ampersandjs.com/;不要忘記定義您的自定義同步功能,如果你正在構建同構的應用程序)。基本上,使用React的主幹模型沒有任何優勢(主幹很重,需要下劃線,速度較慢;我使用https://lodash.com/代替)。

+0

我會補充一點,當我不再認爲我的商店與MVC中的模型類似時,我更喜歡Flux,特別是他們絕對不應該像骨幹模型那樣獲取自己的數據。這些操作應該與API通信,並且只通過調度程序將數據提供給商店:https://cask.scotch.io/2014/10/V70cSEC.png。如果你這樣想,它就更清楚爲什麼骨幹模型不適合。 – 2015-05-13 20:30:29

+0

我們在代碼庫的某些部分使用Backbone + React(與反應集成的舊傳統骨幹代碼)以及IMO,它使得反應的目的,即對單向數據流的意見失敗。 Backbone被設計爲與不一定是單向的模型一起工作。 – kunl 2015-10-23 08:43:23

4

恕我直言Flux商店與骨幹模型/集合不是不相容的。 只要將它們與Flux調度程序集成並允許它們發出觸發渲染的事件,就可以使用Backbone集合作爲Flux商店。

我只是不確定骨幹模型是否意味着首先是不可變的數據結構,從而使React難以優化渲染。

我也會說我從來沒有真正發現所有這些骨幹模型/集合方法真的有用。在Flux體系結構中,API請求往往會被動作創建者而不是商店直接觸發,因此允許多個商店收聽相同的請求完成。

Where should ajax request be made in Flux app?

+1

@fisherwebdev在評論主題中回答:「不,調用商店中的數據並不會破壞[Flux]範例。」 http://stackoverflow.com/questions/26632415/where-should-ajax-request-be-made-in-flux-app#comment46461641_26637579 – 2015-05-24 07:08:38

+0

我完全同意!流量和骨幹一起工作,只要你不落入壞習慣。主幹集合和模型是可變的,但這並不意味着你必須以這種方式使用它們。我已經將我的收藏掛上了註冊助理調度員,這是我允許數據進入或離開商店的唯一方法。骨幹收藏品提供了一個不錯的預製商店,因此您不必手動撰寫。另外,主幹模型允許您對要注入的數據強制實施模式。它爲您的數據存儲添加了許多複雜功能。 – avocadojesus 2017-03-01 20:42:46

1

React的一個好處是它是不可知的 - 您可以在沒有問題的情況下將它與Backbone模型和集合一起使用。 Flux是一個建議的體系結構,但我認爲該模型與MVC差異很大,以至於在一天結束時,不值得嘗試使用它們 - 使用React與Flux或React與Backbone模型和集合。

我不會推薦使用Backbone模型/集合作爲Flux商店 - 它們不是一回事。主要原因是一個助焊劑商店不能從外面突變 - 它不提供setter。 Flux商店會根據行爲改變它自己的狀態。即使您使用Backbone模式作爲商店遵循「Flux」方式,您的代碼仍有開放的可能性,可用於從商店外直接操縱狀態,從而可能被團隊的其他成員濫用,例如...

0

+1 Vetrenko Maxim關於骨幹和架構模式集成的答案。 Flux是React應用程序的數據流模式,可以使用您希望的任何數據存儲/模型框架。數據從意見流

  • 更好的代碼組織
  • 配車型
  • 更容易調試數據問題
  • 區劃分數據存儲/型號編碼

    • 更容易理解:

      的使用流量+陣營的優勢

    有幾種模型框架可供使用,我更喜歡www.js-data.io用於React + F勒克斯。

  • 1

    骨幹的模型集合是可變的,而反應的主題是不變性。所以,技術上使用Backbone + React正在做一個反模式。 我已經使用了反應+骨幹和反應+通量。我肯定會比其他人更喜歡反應+通量。

    0

    Flux是一種強制實現單向數據流的架構模式。 Flux模式是通用的,它並不特定於React應用程序。通過Flux,可以防止定義不良的數據流和缺乏數據完整性。

    如果您將選擇Backbone,只要您知道何時使用Flux方式和Backbone方式,就可以將這兩者結合使用。