【问题标题】:Flux+React vs Backbone+React [closed]Flux+React 与 Backbone+React [关闭]
【发布时间】:2015-05-03 02:50:23
【问题描述】:

Flux+React 相比 Backbone+React 有哪些优势。对于庞大的复杂代码库,除了代码开发的便利性之外,是否存在任何性能差异。

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

【问题讨论】:

    标签: backbone.js reactjs reactjs-flux


    【解决方案1】:

    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/ 代替)。

    【讨论】:

    • 我要补充一点,当我不再认为我的商店类似于 MVC 中的模型时,我更喜欢 Flux,尤其是它们绝对不应该将自己的数据作为 Backbone 获取模型做。这些操作应该与 API 对话,并且只通过调度程序将数据提供给商店:cask.scotch.io/2014/10/V70cSEC.png。如果你这样想,就会更清楚为什么 Backbone 模型不太适合。
    • 我们在代码库的某些部分(旧的遗留主干代码与 react 集成)中使用 Backbone+React,而 IMO,它违背了 react 的目的,即对单向数据流的视图。 Backbone 设计用于处理不一定是单向的模型。
    【解决方案2】:

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

    我只是不确定 Backbone 模型一开始就意味着是不可变的数据结构,因此 React 更难优化渲染。

    我还要说,我从未真正发现所有这些 Backbone 模型/集合方法真正有用。在 Flux 架构中,API 请求往往由动作创建者而不是由商店直接触发,因此允许多个商店监听同一个请求完成。

    Where should ajax request be made in Flux app?

    【讨论】:

    • @fisherwebdev 在评论线程中回答他的回答:“不,在存储中调用数据不会破坏 [Flux] 范式。” stackoverflow.com/questions/26632415/…
    • 我完全同意! Flux 和 Backbone 可以很好地协同工作,只要你不养成坏习惯。主干集合和模型是可变的,但这并不意味着您必须以这种方式使用它们。我已将我的收藏与通量调度程序联系起来,这是我允许数据进入或离开商店的唯一方式。主干集合提供了一个不错的预建存储,因此您不必手动编写。此外,骨干模型允许您对正在注入的数据强制执行模式。它为您的数据存储增加了很多复杂性。
    【解决方案3】:

    React 的一个好处是它是不可知的——你可以毫无问题地将它与 Backbone 模型和集合一起使用。

    Flux 是一种建议的架构,但我认为该模型与 MVC 差异很大,以至于最终尝试同时使用它们是不值得的 - 将 React 与 Flux 或 React 与 Backbone 模型和集合一起使用。

    我不建议将 Backbone 模型/集合用作 Flux 存储 - 它们不是一回事。主要原因是通量存储不能从外部变异 - 它不提供设置器。 Flux 存储改变它自己的状态以响应操作。即使您使用 Backbone 模型作为存储遵循“Flux”方式,您的代码仍然有可能从存储外部直接操作状态,这可能会被团队的其他成员滥用,例如...

    【讨论】:

      【解决方案4】:

      Backbone 的模型集合是可变的,而 React 的主题是不变性。所以,从技术上讲,使用 Backbone+React 是在做一个反模式。 我同时使用了 react+backbone 和 react+flux。我肯定会比其他人更喜欢 react+flux。

      【讨论】:

        【解决方案5】:

        +1 Vetrenko Maxim 关于骨干网和架构模式集成的回答。 Flux 是 React 应用程序的一种数据流模式,可以使用任何你想要的数据存储/模型框架。

        使用 Flux+React 的优势:

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

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-10-24
            • 1970-01-01
            • 1970-01-01
            • 2016-12-22
            • 1970-01-01
            • 2018-01-02
            • 2017-01-08
            • 2015-03-01
            • 1970-01-01
            相关资源
            最近更新 更多