Ember.js或Backbone.js用于Restful后端

我已经知道,与backbone.js相比,ember.js是一个比较重的方法。 我读了很多关于两者的文章。

我问自己,作为rails rest后端的前端,哪个框架更容易工作。 对于backbone.js,我看到了不同的方法来调用rest后端。 对于余烬,似乎我必须包含更多的库,如“数据”或“资源”。 为什么有两个这样的库?

那么最好的select是什么? 也没有很多例子将前端连接到后端。 什么是后端rest的一个很好的工作示例调用这个:

URI:../restapi/topics GET auth凭证:admin / secrect格式:json

与stream行的观点相反,Ember.js对Backbone.js来说不是一个“更重的方法”。 它们是针对完全不同的最终产品的不同types的工具。 Ember的甜蜜点是应用程序,用户可能会长时间(也许是整天)保持应用程序的开放,与应用程序视图或底层数据的交互会触发视图层次结构的深层变化。 Ember比Backbone大,但是由于ExpiresCache-Control只在第一次加载时才起作用。 每天使用两天后,如果您的内容涉及图像,那么额外的30k将会被数据传输所掩盖。

骨干对于视图层级保持相对平坦且用户倾向于不经常或在较短时间内访问应用的less数状态的应用是理想的。 骨干的代码得到保持简短和甜蜜,因为它假定支持DOM的数据将被扔掉,这两个项目将收集内存: https : //github.com/documentcloud/backbone/issues/231#issuecomment-4452400骨干更小的尺寸也使得它更适合简单的交互。

用户在这两个框架中编写的应用程序反映了这些用途:Ember.js应用程序包括Square的Web仪表板 , Zendesk (至less是代理/票务界面)和Groupon的调度程序:用户可能整天花费在所有应用程序上。

骨干应用程序更专注于短暂或休闲的互动,通常只是较大的静态页面的一小部分: airbnb , 可汗学院 , Foursquare的地图和列表 。

可以使用Backbone来制作Ember目标应用程序(例如Rdio )a)增加您负责的应用程序代码的数量,以避免内存泄漏或僵尸事件等问题(我个人不推荐这种方法)或者b)通过添加像backbone.marionette或Coccyx这样的第三方库 – 有很多这样的库都试图提供类似的重叠function,你可能最终会组装自己定制的框架,这个框架更大,需要更多的粘合代码如果你只是使用Ember。

最终“使用哪个”的问题有两个答案。

首先,“我应该在职业生涯中一般使用哪一种方式”:这两种方式,就像你最终将学习任何特定于工作的工具一样,你将来也会这样做。 你永远不会问“骨干或D3?”; “骨干或灰烬”是一个同样愚蠢的问题。

其次,“我应该使用哪一个,特别是我的下一个项目”:取决于项目。 两者都将同样轻松地与Rails服务器进行通信。 如果您的下一个项目涉及由服务器生成的页面混合,并使用JavaScript提供的所谓的“丰富岛屿”,则使用Backbone。 如果您的下一个项目将所有交互推入浏览器环境,请使用Ember。

给出一个简短的答案:对于一个RESTful后端,目前,你应该使用Backbone。

给一个更复杂的答案:这真的取决于你在做什么。 正如其他人所说的,Ember是为不同的事物而devise的,并会吸引不同的人。 我的简短回答是基于您对RESTful要求的包含。

目前,Ember-Data(似乎是Ember中的默认持久机制)远没有准备就绪。 这意味着它有相当多的错误,关键是不支持嵌套的URI(例如/ posts / 2 / comments / 4556)。 如果REST是你的要求,那么如果你select了Ember,你将不得不暂时解决这个问题(也就是说,你必须先破解它,等待,从头开始实施像Ember-Data这样的东西,或者不使用-very-RESTful URIs)。 Ember-Data不是Ember的一部分,所以这完全是可能的。

除了规模之外,两者的主要区别基本上是:

Ember试图尽可能地为你做,所以你不必编写尽可能多的代码。 这是非常分层的,如果你的应用程序也是非常分层的,可能会很适合。 因为它为你做了很多事情,所以很难找出错误来自哪里,并且理解意外的行为发生的原因(有很多“魔法”)。 如果你有一个自然而然地适合于Ember希望你正在构build的应用types的应用,这可能不会是一个问题。

主干尝试尽可能less地做你的事情,这样你就可以推断出发生了什么,并构build出适合你的应用的体系结构(而不​​是构build一个适合你使用的框架的应用)。 开始使用起来要容易得多,但除非你小心,否则很快就会陷入混乱。 它不会像计算的属性,自动解除绑定事件等等,并把它们留给你,所以你将需要自己实现很多东西(或者至lessselect那些为你做的),尽pipe这是而是整个点。

更新 :到目前为止,Ember现在支持嵌套的URI,所以我想这个问题归结为你喜欢多less魔法,以及Ember在体系结构上是否适合你的应用。

我认为你的问题很快就会被阻止:)这两个框架之间有一些争论。

基本上Backbone不会做很多事情,这就是为什么我喜欢它:你将不得不编写很多代码,但是你会在正确的地方编码。 Ember做了很多事情,所以你最好看看它在做什么。

服务器讨论是Backbone为数不多的几件事情之一,它的工作非常出色。 所以我会从Backbone开始,然后尝试Ember,如果你不完全满意。

您还可以听这个播客 ,Backbone的创始人Jeremy Ashkenas和Ember的成员Yehuda Katz有一个很好的讨论