2011-06-08 52 views
8

我很想知道这一段时间,还没有真正找到答案。结合Ruby on Rails和骨干

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

目前我看不出一个理由,你为什么会想用它来做什么,因为我不认为我了解Backbone.js的概念

+0

http://backbonetutorials.com可以帮助你开始。 – 2011-06-08 11:24:24

回答

5

轨道的一大好处是,你有一个平台和一种你使用的语言来处理服务器代码,并可以生成客户端代码(使用视图)。

毫无疑问,这个理论上的优势很快就会开始滑落,一旦你想改善你的用户体验与JavaScript和jQuery。所以实际上你仍然需要学习两种语言。

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

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

但是,在开发与Rails结合使用的客户端MVC应用程序时存在很大的缺点:您将不得不做一些双重开发(使用flex/silverlight时也是如此)。您的模型将需要在服务器和客户端上定义。我可以想象,可以进行一些改进,例如在客户端MVC上实际使用的是演示者类,在服务器端可以将它们存储在不同的模型/表中。但仍然会有逻辑重复,型号...

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

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

要简化ajaxify您当前的rails应用程序(减少每个页面的加载时间),请参阅pjax-rails

+0

为避免重复,您可以使用瘦服务器。只是数据访问和验证。 – Raynos 2011-06-08 14:17:32

+0

是的,但是Rails使得创建模型非常容易,添加验证......在Backbone/Sproutcore中,您将不得不重新定义模型,定义属性,添加本地验证,添加业务逻辑(可能不是服务器上需要更长时间?)。所以仍然会有重复的代码。现在无法避免这种重复。 – nathanvda 2011-06-08 14:28:14

+0

避免是错误的词。为了减少重复,将一些生活在轨道上的代码移到主干上。但是使用瘦服务器(数据存储和验证)会失去RoR的优势。唯一避免重复的方法是不使用rails。 – Raynos 2011-06-08 14:31:59

4

(比从未更好的迟到 - 希望这对某人有用) backbonejs网站上的描述看起来像很多没有太多意义的词语一起扔。围绕它有一个大炒作,但什么是大惊小怪?

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

使用骨干的模型,集合和视图为您提供了一个深思熟虑的结构,可以让您构建大型应用程序而不会被复杂性所淹没。更重要的是,它与美妙的后台结合在一起。

+0

所以你会说Backbone.js是为单页面Web应用程序的用例而构建的,而纯粹的Rails解决方案在Web应用程序由多个页面/屏幕组成的情况下运行良好? – 2014-05-14 14:14:33

+1

总的来说,是的。但是我会补充一点,即使你的应用程序由多个页面/屏幕组成,但其中一些由大部分的JavaScript组成,仍然可以从使用主干来构造代码中受益。 你会在不使用控制器或模型的情况下在单个文件中写入rails后端吗?可能不会。同样,如果您的前端代码开始做些稍微复杂的事情,骨干网将开始增加构建代码的价值。 – 2014-05-14 14:28:22