【问题标题】:Combining Ruby on Rails and Backbone结合 Ruby on Rails 和 Backbone
【发布时间】:2011-06-08 11:16:37
【问题描述】:

我一直在想这个问题,但还没有真正找到答案。

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

目前我看不出您为什么要将它用于某事的原因,因为我认为我不了解 Backbone.js 的概念

【问题讨论】:

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


【解决方案1】:

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

毫无疑问,一旦您想使用 javascript 和 jquery 改善用户体验,这种理论上的优势就会迅速消失。所以实际上你仍然需要学习两种语言。

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

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

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

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

但是,当您确实需要真正的原生应用程序或单页 Web 应用程序的外观和感觉时,JavaScript 客户端 MVC 框架就是您的最佳选择。如果你确实需要一个客户端 MVC 框架,我建议Sproutcore

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

【讨论】:

  • 为避免重复,您可以拥有一台瘦服务器。只是数据访问和验证。
  • 是的,但是 Rails 可以很容易地创建模型,添加验证,...而在 Backbone/Sproutcore 中,您必须重新定义模型,定义属性,添加本地验证,添加业务逻辑(服务器上可能不再需要它?)。所以仍然会有重复的代码。现在无法避免这种重复。
  • 避免是错误的词。为了减少重复,将一些存在于 Rails 上的代码移动到主干。但是,使用瘦服务器(数据存储和验证)会失去 RoR 的优势。避免重复的唯一方法是不使用 rails。
  • 似乎在 AR/DataMapper 模型上使用某种#to_backbone 反射方法是一件很酷的事情,可以尝试和编写。
  • 这是迄今为止我看到的关于 Backbone(和类似)价值的最清晰和最有用的解释。你会说 Javascript / 客户端 MVC 对于类似 Gmail 的单页应用程序最有价值吗?
【解决方案2】:

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

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

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

【讨论】:

  • 那么你会说 Backbone.js 是为单页 Web 应用程序的用例而构建的,而纯 Rails 解决方案在 Web 应用程序由许多页面/屏幕组成的情况下效果很好?跨度>
  • 总的来说,是的。但我要补充一点,即使您的应用程序由许多页面/屏幕组成,但其中一些是由大部分 javascript 组成的,您仍然可以从使用主干构造代码中受益。您会在不使用控制器或模型的情况下在单个文件中编写 Rails 后端吗?可能不是。同样,如果你的前端代码开始做一些稍微复杂的事情,主干将开始为你的代码结构化增加价值。
猜你喜欢
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 2016-02-24
  • 2020-02-01
  • 2012-01-09
相关资源
最近更新 更多