结合Ruby on Rails和Backbone

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

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

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

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

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

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

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

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

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

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

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

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

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

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