18

Rails 是一个非常棒的后端框架,可以保持一切整洁和结构化。

我想你们都考虑过为前端做同样的事情。

  • 芽核
  • 卡布奇诺

您是否将其中一种 MVC javascript 框架用于 Rails 的前端?

如果你这样做了,你对它感到满意吗?

你之前是如何编码的,它是如何改变的?

Sproutcore 不是更适合 Rails,因为它使用 Rails 也使用的 js+css+html。在卡布奇诺中,您不使用其中任何一种。

分享你的想法和经验,因为我对这个领域很熟悉,不知道我应该在 Rails 中使用哪一个。

我只知道我最好在前端有一个 MVC 框架来获得 DRY 结构和最佳实践。

4

3 回答 3

17

在查看工作中的 MVC 框架时,我们考虑了 SproutCore 和 Cappuccino。他们都从 Apple 的 Cocoa 框架和 Objective C 中汲取了大量灵感。

我们选择使用 SproutCore 是因为:

  • 它以一种与 Douglas Crockford 对 JavaScript 的观点一致的方式利用 JavaScript,如JavaScript: The Good Parts中所述。
  • 生成快速应用程序的优秀 MVC 框架。
  • 支持该项目的良好社区。SproutCore 的父亲 Charles Jolley 直到最近才在 Apple 工作,现在全职从事 SproutCore 的工作。Apple 为 SproutCore 的基础贡献了大量代码,并且正在充分利用它,iWork.com 是使用 SproutCore 构建的事实证明了这一点。
  • SproutCore 专为具有数千个元素的非常繁重的应用程序而设计,使用优化的技术,如在大型列表中回收列表项 à la Google Wave 或 Google Maps。

我们没有选择卡布奇诺,因为:

  • 它创建了一种不同的语言来运行您的应用程序。这是不直观的,让您在 Objective J 中思考,它确实提供了一个好处,即您不会带来讨厌的 JavaScript hacky 习惯,但忽略了 JavaScript 的事实美观、可扩展且功能强大。(我绝不是在“抨击”Objective J,只是让您深入了解您在浏览器中运行 JavaScript,而不是 Objective J。如果您确实在浏览器中运行另一种语言,它可能会令人困惑,因为您正在解释使用解释语言的解释语言。)
  • 然而,Objective J 和 Cappuccino 制作了漂亮的应用程序并利用了 Objective C 的语言架构,这是在 MVC 世界中值得一看的一个很好的模型。

(请记住,我在 Cappuccino 和 Objective J 方面没有丰富的经验,所以如果我提出广泛而幼稚的主张,请告诉我!)

您需要更多地关注您想要的前端框架,而不是 Rails 的“最佳效果”。两个框架都很好。我们选择 SproutCore 是因为它更符合我们对应用程序的需求,并且符合我们的意识形态。

从涉足 SproutCore 源代码的经验来看,我可以说它完全独立于您正在使用的服务器实现。我们使用 Prosody,一个用 Lua 编写的 BOSH 服务器。你想使用 Rails。SproutCore 开箱即用:

  • Rails 部署的数据源。仅供参考 - DataStores 是 SproutCore 的低端模型层,用于连接到 Web 服务。这很可能是您的 SproutCore 应用程序和 Rails 应用程序之间的交汇点。SproutCore 并不是真的要在 Rails 中运行,但您当然可以做到!
  • 用于 RESTful Rails 服务的数据存储。或者任何与此相关的 REST API。如果您需要,它还允许服务器端推送。

至于您的 DRY 要求 - 这完全取决于您!您可以利用该框架使您的代码独立和干燥,或者具有紧密的依赖关系并重复。任何一个框架都很好,这取决于您的需求。不要紧张-潜入并了解社区以及每个社区发生的事情!我们不咬...太多。

于 2010-09-21T01:14:08.683 回答
3

我已经在评论中说过了,但是您要求我将其发布为答案,所以就在这里。:)

如果您正在构建富客户端应用程序,Rails 并不会真正为您提供太多帮助。客户端 Web 开发框架通常将大部分繁重的工作放在客户端上,并且仅将服务器用于存储和可能进行一些繁重的计算(如果需要)。所以我个人认为你甚至不需要 Rails——你可以使用更简单的东西,比如Sinatra。由于客户端是您的应用程序的“肉”,您将在那里进行大部分开发,因此首先专注于寻找一个好的客户端库/框架,然后再担心服务器端。

也就是说,我会尝试两者,看看你更喜欢哪个。卡布奇诺非常...不同,很多人都被它推迟了(我认为主要是因为 Objective-J)。在我有限的测试中,它的加载似乎也比我使用的其他框架慢得多。我建议您尝试在其中编写一个小型应用程序,如果您觉得它不适合您,请将其从您的列表中划掉。

就个人而言,我会毫不犹豫地选择 SproutCore,因为您已经了解 JavaScript(我假设?)并且您会更熟悉开发风格。它还将允许您使用所需的任何服务器端框架。

我不知道您是否看过它,但还有ExtJS,它是另一个非常流行的用于创建富 Web 应用程序的框架。我用过它,它很棒,但是许可证要求您将软件作为开源发布或购买商业许可证——我不知道您的情况,但这对我来说是一个交易破坏者。

最后,我建议您尝试一下。我不能告诉你一个框架是否适合你的个人品味。


免责声明:我从未认真地将 SproutCore 或 Cappuccino 用于测试以外的任何事情,所以我所说的一切都持保留态度。

于 2010-09-19T10:17:49.010 回答
2

我将 Rails 与 Cappuccino 一起使用,这对我来说真的很痛苦,尽管这种观点带有强烈的个人偏见。首先,我对objective-j 感到不舒服;我以前没有任何objective-c经验,根本不喜欢整个类似smalltalk的消息发送东西(我更像是一个面向功能的程序员)。

此外,如果您想集成 Rails 和 Cappuccino,您将被迫在任何地方使用 JSON,因此准备好重构几乎所有内容以响应多种格式(您可能也希望响应纯 HTML,以防用户的浏览器无法使用卡布奇诺 - 或一般的 js)。

此外,您将比平时更长时间地陷入问题,因为周围没有很多 Rails + Cappuccino 应用程序和开发人员(afaik),而且互联网上的所有内容都没有很好的记录。

最后但并非最不重要的一点是,您将花费大量时间在 Objective-j 中构建界面的每一部分;正如您可能期望的那样,它更像是编写一个可可用户界面而不是一个 Web 用户界面(这对我来说是一个缺点!)而且我不知道有任何软件/ide 在这个过程中可以帮助你(280atlas 已经宣布了几个多年前,但从未向公众开放)。

总之,我不会在这个阶段推荐 Rails + Cappuccino,除非你只是为了好玩和/或学习有关 Web 编程的新知识。

于 2010-09-15T22:05:21.710 回答