Rob*_*uch 98 rest frontend ruby-on-rails backbone.js ember.js
我已经知道,与backbone.js相比,ember.js是一种更重量级的方法.我读了很多关于两者的文章.
我问自己,哪个框架更容易作为铁轨休息后端的前端.对于backbone.js,我看到了不同的方法来调用休息后端.对于ember来说,似乎我必须包含更多的库,如'data'或'resources'.为什么有两个库?
那么更好的选择是什么?还有很多例子可以将前端与后端连接起来.什么是后端休息呼叫的良好工作示例:
URI:../ restapi/topic GET auth凭证:admin/secrect格式:json
Tre*_*cki 257
与流行的观点相反,Ember.js不是Backbone.js的"更重量级的方法".它们是针对完全不同的终端产品的不同工具.Ember的最佳选择是用户将应用程序长时间打开(可能是整天)的应用程序,与应用程序视图或底层数据的交互会触发视图层次结构中的深层更改.Ember比Backbone大,但多亏了Expires,Cache-Control这只对第一次加载很重要.经过两天的日常使用后,如果您的内容涉及图片,那么额外的30k将被数据传输所掩盖.
Backbone非常适用于具有少量状态的应用程序,其中视图层次结构保持相对平坦,并且用户倾向于不经常访问应用程序或更短的时间段.Backbone的代码保持简短和甜蜜,因为它假设支持DOM的数据将被丢弃,并且两个项目都将被收集内存:https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400 Backbone较小的尺寸也使其更适合简短的交互.
人们在这两个框架中编写的应用程序反映了这些用途:Ember.js应用程序包括Square的Web仪表板,Zendesk(至少是代理/票务界面)和Groupon的调度程序:用户可能整天工作的所有应用程序.
Backbone应用程序更多地关注简短或偶然的交互,这通常只是更大静态页面的一小部分:airbnb,Khan Academy,Foursquare的地图和列表.
你可以使用Backbone来制作Ember目标的应用程序(例如Rdio)a)增加你负责的应用程序代码量,以避免内存泄漏或僵尸事件等问题(我个人不推荐这种方法)或者b)通过添加第三方库,如backbone.marionette或Coccyx - 有许多这些库都试图提供类似的重叠功能,你可能最终会组装自己的自定义框架,这个框架更大,需要更多的胶水代码.如果你刚刚使用了Ember.
最终,"使用哪个"的问题有两个答案.
首先,"我应该在我的职业生涯中使用哪种方式":两者,就像你最终将学习任何特定于将来你想做的工作的工具一样.你永远不会问"Backbone还是D3?"; "Backbone或Ember"是一个同样愚蠢的问题.
第二,"我应该使用哪个,特别是我的下一个项目":取决于项目.两者都可以轻松地与Rails服务器通信.如果您的下一个项目涉及由服务器生成的混合页面以及由JavaScript提供的所谓"富裕岛",请使用Backbone.如果您的下一个项目将所有交互都推送到浏览器环境中,请使用Ember.
ben*_*ies 26
简要回答一下:对于RESTful后端,目前应该使用Backbone.
给出一个更复杂的答案:这实际上取决于你在做什么.正如其他人所说,Ember是针对不同的事物设计的,并且会吸引不同的人群.我的简短回答是基于您包含RESTful要求.
目前,Ember-Data(它似乎是Ember中的默认持久性机制)还远未准备好生产.这意味着它有很多错误,而且至关重要的是,它不支持嵌套的URI(例如/ posts/2/comments/4556).如果REST是你的要求,那么如果你选择Ember,你将不得不暂时解决这个问题(即你要么必须破解它,等待,自己从头开始实施类似Ember-Data的东西,或者不要使用-very-RESTful URIs).Ember-Data并不是Ember的严格组成部分,所以这是完全可能的.
除了尺寸之外,两者之间的主要区别基本上是:
Ember尝试尽可能多地为您做,这样您就不必编写尽可能多的代码.它是非常分层的,如果你的应用程序也是非常分层的,可能会很合适.因为它对你有很大帮助,所以很难弄清楚错误来自何处以及为什么会出现意外行为(有很多"魔法").如果您的应用程序自然适合Ember期望您构建的应用程序类型,那么这可能不会成为问题.
Backbone尝试尽可能少地为您做,以便您可以推断出正在发生的事情并构建适合您的应用程序的架构(而不是构建适合您正在使用的框架的体系结构的应用程序).开始使用起来容易得多,但除非你小心,否则很快就会陷入混乱.它没有做像计算属性,自动解除绑定事件等的东西,并且留给你,所以你需要自己实现很多东西(或者至少选择那些为你做这些的库),尽管那是而是整点.
更新:看来,截至最近,Ember现在支持嵌套的URI,所以我想问题是你喜欢多少魔法以及Ember是否适合你的应用程序.
| 归档时间: |
|
| 查看次数: |
30184 次 |
| 最近记录: |