让 React + Backbone 应用程序在没有集合的情况下变得安静

Posted

技术标签:

【中文标题】让 React + Backbone 应用程序在没有集合的情况下变得安静【英文标题】:Making a React + Backbone application restful without Collections 【发布时间】:2015-09-28 02:03:17 【问题描述】:

我正在尝试将 REST 添加到 react + 主干示例中。 用于执行此操作的 tutorial 需要 Backbone.Collection,但我发现的示例 (TodoMVC) 似乎根本没有使用 Collections,这与我对使用 Backbone 和 React 的 tutorial 的预期相反.

以后会有问题吗?

其次,如果没有明确引用Collection,我如何让应用程序变得安静。我必须用一个重写它​​吗?

编辑:

我最终改用了Collection,但在重组部分代码时遇到了麻烦。

我引用的原始example 有点像这样:

var TodoStore = _.extend(_todos, 
    getAll: function() 
        return _todos.toJSON();
    
    ...
 

现在,我的 TodoStore 变成了TodoStore = new TodoCollection(); 那么我应该将这些函数放在哪里呢?我尝试将它们放在 TodoCollection 中(也许相当天真),但新条目不再保存在商店中。

这些函数属于哪里?

编辑 2: 研究前面的例子让我很困惑。

看起来他们的 TodoStore(我想成为 Collection)是一个模型。

当他们创建一个项目时,他们会将其添加到该模型中,这对我来说没有多大意义。他们不应该创建一个模型实例并将其添加到Collection,还是我误解了什么?

叹息 编辑 3: 刚刚注意到他们的Model实际上是一个实例。

我以为var _todos = Backbone.Model.extend();其实是:... = new Backbone.Model.extend();

我想这会改变一些事情。

【问题讨论】:

【参考方案1】:

TodoMVC 是一个受限制的示例,它假装是说明性的,而不是详尽地展示了库的所有特性。

Backbone 是一种自助式库,采用您需要的东西,而不是像 Angular 那样更严格的框架,因此它“不应该”成为问题,但它在某种程度上取决于您在服务器端的 REST API。

我个人会使用Collections,如果它们看起来是我的 DSL 上聚合对象的自然表示,一般来说我会“总是”使用它。主要优点是利用您将从Collections 自动获得的所有事件进行 CRUD 操作。

集合是有序的模型集。您可以绑定“更改”事件以在集合中的任何模型被修改时收到通知,监听“添加”和“删除”事件,从服务器获取集合,并使用全套 Underscore.js 方法。

最后,无论你是否添加 React.js,所有暴露的都是绝对独立的

关于您的修改:

在看到您的编辑后,我认为该示例对于您的问题域来说并不是一个很好的指南。像this 这样的东西更“真实”

    我尝试将它们放入 TodoCollection 对 收藏 是的,这不自然,他们试图保持示例简单,如果有服务器端,它应该是一个集合 是的,它改变了很多。看看Douglas Crockford article 我认为没有参数的extend 也可以删除

【讨论】:

以上是关于让 React + Backbone 应用程序在没有集合的情况下变得安静的主要内容,如果未能解决你的问题,请参考以下文章

对 Backbone + React 应用程序中的模型的困惑

使用Backbone View作为React组件

我可以将 Backbone 与 React Native 一起使用吗?

React + Backbone,目标容器不是 DOM 元素

Backbone Backbone初探

js为什么要使用react+redux