我即将从头开始创建一堆网络应用程序。 (有关概述,请参阅 http://50pop.com/code。)我希望能够从许多不同的客户端访问它们:前端网站、智能手机应用程序、后端 Web 服务等。因此,我真的希望每个客户端都有一个 JSON REST API .
另外,我更喜欢在后端工作,所以我梦想着将我的注意力完全集中在 API 上,并雇用其他人来制作前端 UI,无论是网站、iPhone、Android 还是其他应用程序.
请帮助我决定应该采取哪种方法:
TOGETHER IN RAILS
Make a very standard Rails web-app. In the controller, do the respond_with switch, to serve either JSON or HTML. The JSON response is then my API.
Pro: Lots of precedent. Great standards & many examples of doing things this way.
Con: Don't necessarily want API to be same as web app. Don't like if/then respond_with switch approach. Mixing two very different things (UI + API).
REST SERVER + JAVASCRIPT-HEAVY CLIENT
Make a JSON-only REST API server. Use Backbone or Ember.js for client-side JavaScript to access API directly, displaying templates in browser.
Pro: I love the separation of API & client. Smart people say this is the way to go. Great in theory. Seems cutting-edge and exciting.
Con: Not much precedent. Not many examples of this done well. Public examples (twitter.com) feel sluggish & are even switching away from this approach.
REST SERVER + SERVER-SIDE HTML CLIENT
Make a JSON-only REST API server. Make a basic HTML website client, that accesses the REST API only. Less client-side JavaScript.
Pro: I love the separation of API & client. But serving plain HTML5 is quite foolproof & not client-intensive.
Con: Not much precedent. Not many examples of this done well. Frameworks don't support this as well. Not sure how to approach it.
特别是从经验中寻求建议,而不仅仅是理论上。
最佳答案
在Boundless ,我们深入研究了选项#2,并将其推广给了数千名学生。我们的服务器是 JSON REST API(Scala + MongoDB),我们所有的客户端代码都直接从 CloudFront 提供(即:www.boundless.com 只是 CloudFront 的别名)。
优点:
- 前沿/令人兴奋
- 物超所值:API 为您自己的网络客户端、移动客户端、第三方访问等提供基础。
- 网站加载/页面转换速度极快
缺点:
- 不适合 SEO/无需做更多工作即可完成。
- 需要顶尖的 Web 前端人员,他们准备好应对 70% JavaScript 的网站体验的现实情况以及这意味着什么。
我确实认为这是所有网络应用程序的 future 。
给 Web 前端人员的一些想法(这是该架构带来的所有新奇/挑战):
- CoffeeScript 。更容易生成高质量的代码。
- Backbone 。组织逻辑和活跃社区的好方法。
- HAMLC。 Haml + CoffeeScript 模板 => JS。
- SASS
我们为前端开发构建了一个名为“Spar”(单页应用程序火箭飞船)的工具,它实际上是来自 Rails 的 Assets 管道,专为单页应用程序开发而调整。我们将在接下来的几周内在 github 上开源页面,以及一篇博客文章,更详细地解释了如何使用它和整体架构。
更新:
关于人们对 Backbone 的担忧,我认为他们被高估了。 Backbone 与其说是一个深层框架,不如说是一种组织原则。 Twitter 的网站本身就是一个 Javascript 巨兽,覆盖了数百万用户和旧版浏览器的每一个极端情况,同时实时加载推文、垃圾收集、显示大量多媒体等。在我见过的所有“纯”js 网站中可见,Twitter 是个奇怪的人。有许多通过 JS 交付的极其复杂的应用程序都表现得非常好。
您对架构的选择完全取决于您的目标。如果您正在寻找支持多个客户端并获得优秀前端人才的最快方法,那么投资独立 API 是一个不错的选择。
关于ruby-on-rails-3 - 单独的 REST JSON API 服务器和客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941249/