让 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 与 React Native 一起使用吗?