【发布时间】:2015-05-03 02:50:23
【问题描述】:
Flux+React 相比 Backbone+React 有哪些优势。对于庞大的复杂代码库,除了代码开发的便利性之外,是否存在任何性能差异。
如果我们在使用 Backbone+React 的应用程序中模型和反应视图之间存在 1:1 的关系怎么办?
【问题讨论】:
标签: backbone.js reactjs reactjs-flux
Flux+React 相比 Backbone+React 有哪些优势。对于庞大的复杂代码库,除了代码开发的便利性之外,是否存在任何性能差异。
如果我们在使用 Backbone+React 的应用程序中模型和反应视图之间存在 1:1 的关系怎么办?
【问题讨论】:
标签: backbone.js reactjs reactjs-flux
Flux 是一种构建 React 应用程序的架构模式。因此,您可以在商店中使用 Backbone 模型和集合来获取和存储数据。
如果只想使用 React 的 Virtual DOM 功能,则无需使用 react.js。有很多库,为您的应用程序添加了虚拟 DOM 功能 (https://github.com/Matt-Esch/virtual-dom)。
我的建议:如果你会使用 Flux 模式,我强烈推荐你使用http://facebook.github.io/immutable-js/(可以加上http://ampersandjs.com/;如果你是,别忘了定义你的自定义同步函数构建同构应用程序)。使用 React 的骨干模型基本上没有任何优势(骨干很重,需要下划线,这很慢;我使用 https://lodash.com/ 代替)。
【讨论】:
恕我直言 Flux 商店与 Backbone 模型/系列不兼容。 您可以将 Backbone 集合用作 Flux 存储,只要将它们与 Flux 调度程序集成并允许它们发出事件以触发渲染。
我只是不确定 Backbone 模型一开始就意味着是不可变的数据结构,因此 React 更难优化渲染。
我还要说,我从未真正发现所有这些 Backbone 模型/集合方法真正有用。在 Flux 架构中,API 请求往往由动作创建者而不是由商店直接触发,因此允许多个商店监听同一个请求完成。
【讨论】:
React 的一个好处是它是不可知的——你可以毫无问题地将它与 Backbone 模型和集合一起使用。
Flux 是一种建议的架构,但我认为该模型与 MVC 差异很大,以至于最终尝试同时使用它们是不值得的 - 将 React 与 Flux 或 React 与 Backbone 模型和集合一起使用。
我不建议将 Backbone 模型/集合用作 Flux 存储 - 它们不是一回事。主要原因是通量存储不能从外部变异 - 它不提供设置器。 Flux 存储改变它自己的状态以响应操作。即使您使用 Backbone 模型作为存储遵循“Flux”方式,您的代码仍然有可能从存储外部直接操作状态,这可能会被团队的其他成员滥用,例如...
【讨论】:
Backbone 的模型集合是可变的,而 React 的主题是不变性。所以,从技术上讲,使用 Backbone+React 是在做一个反模式。 我同时使用了 react+backbone 和 react+flux。我肯定会比其他人更喜欢 react+flux。
【讨论】:
+1 Vetrenko Maxim 关于骨干网和架构模式集成的回答。 Flux 是 React 应用程序的一种数据流模式,可以使用任何你想要的数据存储/模型框架。
使用 Flux+React 的优势:
有几个模型框架可以使用,我更喜欢 www.js-data.io for React+Flux。
【讨论】:
Flux 是一种架构模式,它强制执行一个方向的数据流。 Flux 模式是通用的,它并不特定于 React 应用程序。使用 Flux,可以防止定义不明确的数据流和缺乏数据完整性。
如果您要选择 Backbone,只要您知道何时使用 Flux 方式和 Backbone 方式,就可以将这两者结合起来。
【讨论】: