Flux + React vs Backbone + React

问题描述:

Flux + React比Backbone + React有什么优势?除了庞大复杂的代码库的代码开发缓解之外,是否还有任何性能差异。Flux + React vs Backbone + React

如果模型与使用Backbone + React的应用程序中的反应视图之间存在1:1的关系,该怎么办?

通量是建筑师图案来构建应用程序作出反应。因此,您可以在商店内使用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

恕我直言Flux商店与骨干模型/集合不是不相容的。 只要将它们与Flux调度程序集成并允许它们发出触发渲染的事件,就可以使用Backbone集合作为Flux商店。

我只是不确定骨干模型是否意味着首先是不可变的数据结构,从而使React难以优化渲染。

我也会说我从来没有真正发现所有这些骨干模型/集合方法真的有用。在Flux体系结构中,API请求往往会被动作创建者而不是商店直接触发,因此允许多个商店收听相同的请求完成。

Where should ajax request be made in Flux app?

+1

@fisherwebdev在评论主题中回答:“不,调用商店中的数据并不会破坏[Flux]范例。” http://*.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

React的一个好处是它是不可知的 - 您可以在没有问题的情况下将它与Backbone模型和集合一起使用。 Flux是一个建议的体系结构,但我认为该模型与MVC差异很大,以至于在一天结束时,不值得尝试使用它们 - 使用React与Flux或React与Backbone模型和集合。

我不会推荐使用Backbone模型/集合作为Flux商店 - 它们不是一回事。主要原因是一个助焊剂商店不能从外面突变 - 它不提供setter。 Flux商店会根据行为改变它自己的状态。即使您使用Backbone模式作为商店遵循“Flux”方式,您的代码仍有开放的可能性,可用于从商店外直接操纵状态,从而可能被团队的其他成员滥用,例如...

+1 Vetrenko Maxim关于骨干和架构模式集成的答案。 Flux是React应用程序的数据流模式,可以使用您希望的任何数据存储/模型框架。数据从意见流

  • 更好的代码组织
  • 配车型
  • 更容易调试数据问题
  • 区划分数据存储/型号编码

    • 更容易理解:

      的使用流量+阵营的优势

    有几种模型框架可供使用,我更喜欢www.js-data.io用于React + F勒克斯。

  • 骨干的模型集合是可变的,而反应的主题是不变性。所以,技术上使用Backbone + React正在做一个反模式。 我已经使用了反应+骨干和反应+通量。我肯定会比其他人更喜欢反应+通量。

    Flux是一种强制实现单向数据流的架构模式。 Flux模式是通用的,它并不特定于React应用程序。通过Flux,可以防止定义不良的数据流和缺乏数据完整性。

    如果您将选择Backbone,只要您知道何时使用Flux方式和Backbone方式,就可以将这两者结合使用。