Backbone与RJS

时间:2012-03-18 10:41:39

标签: ruby-on-rails backbone.js underscore.js rjs

成为一些随机的rails dev,并绕过所有那些骨干/下划线的javascript东西......

Backbone似乎很有趣,但从功能的角度来看(我的意思是你可以从数据库中恢复数据的方式,你的页面可以更新),我看不出有任何真正的理由向前推进骨干网。我说的是,相比轨道带来的RJS方法。

对于骨干网,客户端会发生更多事情;但除了这个事实之外,看不出任何根本的区别

任何骨干传教士的反馈意见

1 个答案:

答案 0 :(得分:1)

这肯定是一个偏好的问题,但是这里有一些关于为什么你可能想要使用像Backbone这样的东西像RJS这样的东西。

当您需要返回$('#post_#{@post.id}').slideUp()之类的代码或类似内容时,RJS非常适合。当您希望后端直接控制前端时。对于很多应用来说,这确实很有意义。但是当你开始涉及更复杂的东西时:更改帖子标题,更改帖子正文,更改帖子标签,更改“最近帖子”侧栏中的帖子标题等。这可能很难保持快速。如果您巧妙地更改标记,则可以破坏所有RJS。此外,使用RJS,很难更改整个页面并保持用户的理智(例如,您将破坏按钮并且通常会在浏览器中遍历整个状态)。

因此,对于更大/更多的端到端应用程序,您可以使用Backbone作为保持代码组织的方式,并移动逻辑以处理向客户端显示数据。一些好处:

  • 您的服务器负载会减少,因为客户端会进行大量的渲染工作。
  • 您在客户端模板中更改了一些标记,如果有更改,则修改相应的Backbone.View是自然而简单的,而不是在Rails中潜在的几个控制器操作的底部。
  • 您可以轻松处理多个页面/状态之间的导航,并将该逻辑保留在客户端上。
  • 将javascript严格整理到适用于您的应用的任何内容(例如collections.jsmodels.jsviews.jsapp.js,这非常简单且低障碍对于较小的东西,或者post_view.jsposts_collection.js ......无论你需要什么)......再次将javascript传播到Rails的程序块中。

如果你的应用程序很适合在一个页面上(例如,很多共享元素,例如页面之间的导航/侧边栏等),那么它将非常适合像Backbone这样的东西

您的Rails应用程序可以更像是任何数量的前端都可以使用的API - 用于Web的Backbone,iPhone应用程序等等。

也有一些缺点。您必须在Java(/ Coffee)脚本中编写至少一些应用程序的视图/控制器逻辑,并且在不长时间重新加载页面时必须小心,不要导致内存泄漏和javascript错误可以杀死你的应用程序什么时候不是权衡,对吗?

可以在此37signals post about Basecamp Next(以及相应的HN discussion)找到使用Backbone的人 的高调示例,否则可能被视为好主意。

如果我能为您澄清任何内容,请告诉我。