结合Ruby on Rails和Backbone

时间:2011-06-08 11:16:38

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

我很想知道这一段时间,但还没有真正找到答案。

为什么要在Rails应用程序中使用Backbone.js exaclty?是扩展功能,为JS创建更多的MVC模式,构建更好的API ......?

目前我看不出你为什么要使用它的原因,因为我认为我不理解Backbone.js的概念

2 个答案:

答案 0 :(得分:4)

rails的一大优势是,您使用一个平台和一种语言来处理服务器代码并生成客户端代码(使用视图)。

毫无疑问,一旦您希望通过javascript和jquery改善用户体验,这种理论优势就会迅速开始下滑。所以实际上你还是要学两种语言。

但是:所有模型,业务规则......都是在Ruby的服务器端处理的。这也意味着服务器必须始终可以访问。

javacript / client MVC(如Backbone.js,Sproutcore,...)可以为您提供的是更原生的应用程序感觉。单个网页应用程序,例如Gmail中。 根据您的要求,这种平台有一些非常有效的用例。例如。在具有低连接性的地方或设备中,使用不需要一直“在线”的Web应用程序(HTML5)非常有用。它可以将数据和编辑保存到本地存储,并在设备重新联机时同步回服务器/数据库。

但是,与Rails一起开发客户端MVC应用程序时有一个很大的缺点:你必须进行一些双重开发(当你使用flex / silverlight时它是一样的)。您的模型需要在服务器和客户端上定义。我可以想象可以做一些改进,比如在客户端MVC上你实际上使用的是presenter-classes,它在服务器端可以存储在不同的模型/表中。但是仍然存在重复的逻辑,模型......

这就是为什么我认为对于大多数应用程序来说,目前切换到某个客户端MVC框架并不明智。这将是一项更多的工作。

但是,如果您确实需要真实本机应用程序或单页Web应用程序的外观,那么javascript客户端MVC框架就是您的选择。如果您确实需要客户端MVC框架,我建议Sproutcore

要简单地aj化您当前的rails应用程序(减少每个页面的加载时间),请查看pjax-rails

答案 1 :(得分:4)

(迟到总比没有好 - 希望这对某人有用) 在backbonejs的网站上的描述似乎很多单词拼凑在一起没有多大意义。围绕它有一个大肆宣传,但有什么大惊小怪的呢?

骨干网背后的前提是,现代的单页网页应用程序(想想gmail)很快就会成为同步dom元素,UI事件和后端之间非常复杂的交互。您可以轻松地找到自己在dom元素中存储数据,然后不得不以某种方式再次提取数据以更新数据库。如果你没有非常仔细地构建你的代码,你很快就会得到充满复杂绑定的意大利面条代码,或没有 backbone 的代码。

使用主干的模型,集合和视图为您提供了一个经过深思熟虑的结构,允许您构建大型应用程序而不会被其复杂性所淹没。更重要的是,它与一个宁静的后端完美结合。