Flux + React vs Backbone + React

时间:2015-03-02 16:47:13

标签: backbone.js reactjs reactjs-flux

Flux + React优于Backbone + React有什么优势。除了代码开发的容易性之外,是否存在任何性能差异,这对于庞大的复杂代码库来说都是如此。

如果我们在使用Backbone + React的应用程序中的模型和反应视图之间存在1:1的关系会怎样?

6 个答案:

答案 0 :(得分:44)

Flux是构建React应用程序的架构师模式。因此,您可以在商店中使用Backbone模型和集合来获取和存储数据。

如果只想使用React的Virtual DOM功能,则无需使用react.js。有很多库,为您的应用程序添加Virtual DOM功能(https://github.com/Matt-Esch/virtual-dom)。

我的推荐:如果您使用Flux模式我强烈建议您使用http://facebook.github.io/immutable-js/(可能会与http://ampersandjs.com/配合使用;请不要忘记定义您的自定义同步函数,如果你正在构建同构应用程序)。基本上使用具有React的主干模型没有任何优势(主干很重,需要下划线,这很慢;我使用https://lodash.com/代替。)

答案 1 :(得分:6)

IMHO Flux商店与Backbone模型/集合不兼容。 您可以将Backbone集合用作Flux存储,只要将它们与Flux调度程序集成,并允许它们发出事件以触发渲染。

我不确定Backbone模型首先是不可变数据结构,因此React更难以优化渲染。

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

Where should ajax request be made in Flux app?

答案 2 :(得分:3)

React的一个好处是它是不可知的 - 你可以将它与Backbone模型和集合一起使用而没有问题。

Flux是一个建议的架构,但我认为该模型与MVC差别很大,以至于在一天结束时不值得尝试同时使用它们 - 使用React与Flux或React与Backbone模型和集合。

我不建议使用Backbone模型/集合作为Flux商店 - 它们不是一回事。主要原因是助焊剂储存不能从外部变异 - 它不提供制定者。一个Flux商店在响应行动时改变它自己的状态。即使你使用Backbone模型作为商店的“Flux”方式,你的代码仍然有可能从商店外直接操纵状态,可能被团队的其他成员滥用,例如......

答案 3 :(得分:3)

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

答案 4 :(得分:0)

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

使用Flux + React的优势:

  • 更容易理解数据流
  • 更好的代码组织
  • 更轻松地调试模型的数据问题
  • 从视图中划分数据存储/模型代码

有几个模型框架可供使用,我更喜欢www.js-data.io用于React + Flux。

答案 5 :(得分:0)

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

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