Backbone.js 前端和 RESTful Rails 后端?

Posted

技术标签:

【中文标题】Backbone.js 前端和 RESTful Rails 后端?【英文标题】:Backbone.js frontend with RESTful Rails backend? 【发布时间】:2012-03-18 15:56:35 【问题描述】:

我在 Web 开发领域开始使用 php,然后是最近几年的 Rails。从那时起,我一直在 Rails 中完成我所有的 Web 项目。

最近似乎有一种趋势,使 Rails 成为纯 RESTful 后端服务,并使用 Backbone.js 等前端框架进行所有前端交互。我想知道你们对此有何看法?这会是最终的未来吗?

此外,除了 Backbone.js,还有哪些其他替代方案可以用于此目的的前端框架?

还假设我希望同时支持我的应用程序的桌面版本和移动版本,这是否是正确的选择?所以我会有一个带有不同前端服务的后端服务吗?这样我就不需要管理 Rails 端的所有视图了?

谢谢!

【问题讨论】:

如果您还没有,请查看这些,railscasts.com/episodes/323-backbone-on-rails-part-1 和 railscasts.com/episodes/325-backbone-on-rails-part-2 帮助我更好地理解引导程序。 Def 开始看到这样一个框架的用处。 Ryan 将他所有的 rails 路由放在一个 api 命名空间中,以将其与 webapp 部分分开,这对我来说也很直观。 uuummmm,骨干网,不是引导程序... :) 【参考方案1】:

对于客户端框架,本文列出了其中的 20 个,其中有优缺点: http://net.tutsplus.com/articles/web-roundups/20-javascript-frameworks-worth-checking-out/

这是列表:

    Backbone.js Knockout.js Asana luna Cappucino Sproutcore BatmanJS corMVC TrimJunction pureMVC jamal choco sammyjs extJS agilityJS eyeballs activejs spinejs qooxdoo

这些大致都是关于创建客户端、基于 ajax 的 javascript MVC 框架。

如果您想从某个地方开始,那么我建议您考虑 客户端模板 (...ates...ates...ates)(只是“V”)支持面向服务的架构(您创建的服务端点支持许多客户端)。

这是一种新技术,涉及模块化客户端代码,将 MVC 引入客户端,并让业务逻辑存在于平台中。许多软件即服务应用程序都在利用它们,并且随着 javascript 库和框架的日益复杂,以及具有 html5、CSS3 等的浏览器功能,客户端呈现的复杂性将会越来越高.

那就学吧。

有什么好处?

解释 Linked In:用于利用浏览器缓存、解耦前端客户端呈现、异步加载、渐进式渲染(对于某些框架)、性能、ajax 交互等。

几个很棒的框架包括:

    mustache dust.js handlebars Google Closure Templates Nun Mu kite

我强烈建议查看Linked In's move away from JSP towards Client-Side Templates 以及他们为什么选择Linked In's front-end client-side templates throwdown 中的dust.js 进行比较。他们更详细地研究并研究了为什么要更改堆栈以支持这一点(这涉及使用 3 种服务器端技术),以及他们对所有可以找到的框架的比较。

【讨论】:

感谢您的回复。我刚刚阅读了您提供的两篇linkedin文章。我想我开始更好地理解客户端模板场景。然而,一个问题又一次挥之不去,那么这个和一些 MVC 框架(如backbone.js)之间的真正区别是什么?这听起来像是我想要的,但是当我听说带有 Rails 的主干.js 时,听起来也像我在谈论的那样。它们之间有什么区别?谢谢! 你所说的“this”和“some MVC framework”像backbone.js是什么意思?这些框架中的每一个基本上都是利用 ajax(和其他技术)与服务/服务器端应用程序交互的 MVC 框架。他们只是有他们的优点和缺点。主干只是一个非常流行的,它大量遵循 ajax + 模型。 哦,好吧,我认为 backjone.js 与您列出的不同。因为它不在您的框架和链接列表中。我想我错误地认为你们认为backbone.js 也应该是一个选项哈哈。谢谢! 这是一个非常好的问题,我希望我没有误导您使用客户端模板。 Backbone.js 通过提供“客户端 MVC”更进一步。它有助于序列化(上面建议的也可以)以及显示(与其他类似),但在利用模型方面具有一些出色的功能。这就是 Backbone 大放异彩的地方:在映射到服务器端模型时,它将使表示状态变化和来自用户手势的交互更容易在任何客户端上复制。我建议深入研究它。 感谢您的新答案。非常感谢!【参考方案2】:

几年前我在 .net 中做过类似的事情。不是通过正确的 .NET MVC,也没有使用新的 JS 框架,但原理是一样的;服务器代码将 JSON 返回到构建页面和交互等的 javascript。

结果是一个可爱的响应式网站,但是,维护是一场噩梦。要非常小心地保持您的 JS 代码井井有条。

就我个人而言,我发现维护服务器代码(任何语言)比 javascript 更容易,所以我不会再走这条路了。

(恕我直言)

弗兰

【讨论】:

【参考方案3】:

我认为,当代 Web 应用程序正在朝着这种具有 RESTful 后端和所有视图交互编码在前端的模型发展。这些来自 Joe Zim 的免费视频教程:

http://www.joezimjs.com/javascript/introduction-to-backbone-js-part-1-models-video-tutorial/

帮助我了解骨干网以及它如何简化模板和查看渲染。

【讨论】:

以上是关于Backbone.js 前端和 RESTful Rails 后端?的主要内容,如果未能解决你的问题,请参考以下文章

django 和backbone.js 问题

require.js+backbone 使用r.js 在本地与生产环境 一键压缩的实现方式

前端框架 | Backbone.js在大型单页面应用中的应用实践

Backbone.js快速入门

Backbone.js快速入门

Backbone.js 仅在 IE7 中导致错误