InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

SproutCore:将MVC引入JavaScript

作者 Shane Witbeck 译者 冉翔 发布于 2007年8月15日

领域
语言 & 开发
主题
Java ,
Ruby ,
Web框架
标签
AJAX

SproutIt发布了SproutCore,一个基于JavaScript语言的完整的全新MVC应用程序框架。SproutCore是SproutIt为了他们的产品Mailroom而开发的,现在已经被Apple用在了.Mac Web Gallery上。下面是来自Tucows的报导:

[……]SproutCore是一个完全运行于浏览器端的JavaScript框架,可以运行在以任何服务器技术为后端的配置环境中。在Jolley的公司SproutIt,他们使用Rails作为服务器后端,他们用一个包含了SproutCore框架的Rails插件来将一切变得更容易。Jolley说 Apple前端使用的是SproutCore,后台则使用WebObjects技术和一台WebDAV服务器[……]

由于市面上早就出现了不少Ajax程序库,InfoQ采访了作者Charles, Jolly,详细了解SproutCore与它们的不同之处。Jolly首先被问到究竟是什么灵感使得他在已有的很多JavaScript框架的之外还要再重新开发一个全新的框架:

在我们构建新版本的Mailroom(我们为小型商业公司提供的邮件管理器——http://www.sproutit.com/mailroom)时,我想做一些更加丰富多彩的东西,使其更像一个桌面软件,而不是一个Web应用程序。

但有个问题就是其它的框架都是被设计用来帮助你在网页的这儿或那儿添加一些Ajax以及动画效果,它们不能帮助你在Web浏览器之上构建一个功能齐备的应用程序。所以我在开发Mailroom的时候,所以我不得不额外构建的用来支持这个富界面的部分,都被我抽取出来,并在软件本身的基础上做出了这个框架。

他又回答了SproutCore所拥有的而其它现有框架没有的特性:

SproutCore和其它框架最大的不同之处在于,它为你提供了所有必要的工具,让你能真正得以与实际数据打交道。换句话说,你可以从服务器读取数据,然后用SproutCore来生成你的用户界面。同样,用户操作数据,SproutCore也将自动的更新你的用户界面并且不需要和服务器进行交互。它使得你的应用程序感觉非常的快速并且丰富多彩。

来看一个非常简单的例子:在Mailroom中我们有一个叫做“Needs Attention”的页面,来告诉你你现在必须回复的邮件。当你回复了一个信息,我们就马上将它从“Needs Attention”这个页面移除。

在传统的框架和Web程序中,你必须与服务器进行一次完整的交互或者编写大量额外的JavaScript。但是用SproutCore这一切都是自动的。只要将消息的状态设置为“已回复”,那么消息列表就会更新。

接下来Jolley被问到到底哪些应用程序该用SproutCore,哪些不该:

如果你希望构建一个更像桌面程序的富客户端程序,你一定要使用SproutCore。一旦你在页面上加入工具栏、菜单和源列表之类的组件后,你很快就会发现你得在页面上维护很多细微的状态。SproutCore使得这些变得更加容易实现。

如果你只是有个网页,并且只需要一些Ajax和动画特效的话,SproutCore就显得大材小用了。我倾向于使用一些更加简捷的框架,譬如 Scriptaculous。实际上,在我们的营销页面和Sproutit的Blog中,我们使用的是Scriptaculous和Prototype。不过我们也使用SproutCore来构建我们所有的Web程序。

随后,这次采访的话题又转向了Apple。Jolley谈到他自己和Apple之间在.Mac Galley上的合作。他说当Apple发现SpoutCore框架后,他被邀请加入他们的团队来帮助他们构建应用程序。为了提高SproutCore的性能以及完善它的API,.Mac团队为在原有基础上又添加了大量的功能。这就使得如今的SproutCore API的运行速度提高了4到5倍,同时跨浏览器方面的表现也是渐入佳境。

最后Jolley被问及了SproutCore的未来:

我正在为它加入更多的功能,例如源列表、工具栏、拖拽和一些超炫的动画效果,这将使SproutCore在UI设计方面更上一层楼。不过可能更重要的是,我正在构建一个实例性的应用或是一个入门教程,因为我认为这是现在采用SproutCore最重要的障碍。
查看英文原文:Bringing MVC to JavaScript - SproutCore
译者简介:冉翔,有着三年JavaEE工作经验,目前是一个Linux/RoR fan。北京RoR培训活动核心成员,个人网站ranxiang.com,你可以通过Email&Gtalk找到他:ranxiang(at)gmail.com。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。