SproutCore:一个HTML 5应用框架

此前InfoQ曾对SproutCore有过多次 报道,最近获悉其1.0版行将发布的消息。SproutCore的目标是在浏览器中提供极佳的桌面效果应用而无需任何浏览器插件。所有这些都不是用什么新技术实现的,而是采用这几年广为应用同时又在不断发展的技术。SproutCore主要采用了JavaScript、HTML以及CSS,这样对后端系统就没什么限制了,显然是个优势。

SproutCore能与任何后端服务器技术搭配使用。事实上,一旦部署之后,SproutCore应用只包含标准的HTML、JavaScript以及CSS。只需使用Apache就能部署完整的SproutCore应用。

自从上次报道SproutCore之后,其发生了很多变化,因此InfoQ采访了Sproutit的总裁兼CEO Charles Jolley以了解即将到来的发布。

到底是什么让SproutCore成为一个HTML 5应用框架?

现在有不少Web框架开始使用HTML 5中的一些新特性(如离线存储、HTML5 ApplicationCache等)来构建富本地(rich native-class)应用,而SproutCore则是其中之一。SproutCore在那些使用HTML 4特性的老的浏览器上工作良好,然而我们期待未来5年兼容于HTML 5的浏览器,如Safari 4、Chrome及Firefox 3.5等能成为主流。
对于我来说,HTML 5将成为Web上最激动人心的事情,因此我们开发了SproutCore。

SproutCore 1.0正式版何时发布?

今年秋天发布,但在这之前就将有构建在SproutCore 1.0之上的应用了。目前来看,其相当稳定,因为在过去的一年中我们添加了5,000多个单元测试,涵盖了每一个特性。在过去的一年当中,我们几乎重写了SproutCore构建工具与JavaScript框架的每一部分,目的就是保持API的稳定性并对性能进行了极大的改进。但我认为SproutCore 0.9及之前版本的主要目的是为了证明我们可以在浏览器中构建桌面级的应用,而SproutCore 1.0则是保证其核心技术能够平滑的使用且具备极强的可靠性。我很高兴地看到我们实际上已经超过了自己的目标。SproutCore 1.0无疑是我们最杰出的成就。

所有的文档以及站点更新之类的工作会随着1.0版的发布而完成么?

当然了。事实上,我们刚刚将API文档放在了http://docs.sproutcore.com上,同时又开发了一个文档查看器。http://demo.sproutcore.com上还有很多示例应用,其中包括一些将于不久之后开源的完整的端到端示例。

为什么要使用SproutCore而不是GWT或是Cappuccino之类的框架?

一般来说,尝试过GWT或是Cappuccino的人们都会由于种种原因而转向SproutCore。其中性能问题是首当其冲的要素。这三个框架(GWT、Capp及SproutCore)在富Web应用上的表现都非常棒。但如果构建的应用非常复杂,瓶颈则很快就会出现,尤其在应用最初的加载阶段更是如此。而在这方面,SproutCore应用的表现是可圈可点的。第二个因素就是可定制化的能力。使用GWT和Cappuccino开发时,我们无需总与浏览器打交道,而是在其Java或是Objective-J沙箱中进行。这种方式很不错,但如果想要探究其底层那可就不好办了。SproutCore也提供了非常丰富的功能,但都是基于普通的JavaScript,这样你就能随心所欲的使用了。

对于视图层来说,为何从Ruby(0.9)转变成了纯JavaScript(1.0)?

主要原因有二。首先,一旦1.0版完成后,我们打算开发一个支持拖拽的UI设计器。而JavaScript使这一切成为可能。事实上,SproutCore 1.0的核心程序库已经对UI设计器的开发提供支持了。我们只需完成设计器应用本身即可。其次,也是更加重要的原因,那就是性能问题。如果只使用JavaScript编写代码,然后让SproutCore处理所有的HTML和CSS的话,我们可以通过一些技巧提高应用的速度,哪怕是IE也没问题。总的来说,SproutCore新的视图层的速度要比之前版本的快10倍多(其实之前版本的也够快了)。此外还有一个好处,那就是纯JavaScript会极大地简化应用的开发,因为开发者不会陷入两种编程语言的泥潭中,一种语言走天下。

DataStore API能从Java Server上获取数据么?RDBMS(如MySQL或Oracle等)又如何呢?

你可以使用任何喜欢的后端,没问题。事实上,大家在学习Todos Tutorial(http://wiki.sproutcore.com/Todos%C2%A0Intro)时会发现我们可以从三种不同的服务器端技术中进行选择。虽然Java不在其中,但我想有人一定已经实现了。最酷的就是SproutCore应用仅仅是由HTML/JS/CSS构成的。后端到底采用什么技术是无所谓的,因为SproutCore应用会通过Ajax与之交互。

能否在SproutCore应用中嵌入其他视图内容(比如视频、Flash以及音频等等)呢?

当然了!大家可以通过Safari 4运行我们提供的视频示例(http://demo.sproutcore.com/video/)。该示例使用了HTML5的video标签。SproutCore 1.0已经不再依赖Prototype了,相反我们开发了自己的SproutCore JS-library。这意味着如果你现有的代码使用到了jQuery、ExtJS、YUI甚至是Prototype,你都可以将其嵌入到SproutCore应用中。

SproutCore 1.1的路线图确定下来了么?

还没有。我们现在把所有精力都放在了SproutCore 1.0上,力求做到极致。1.1的开发方式与1.0将有很大不同,后者主要是凭借一家公司的一己之力完成的,而前者将要依靠社区的力量来实现,因此我期望SproutCore 1.0的发布能引起更多人的注意。

SproutCore的目标是构建只依赖于浏览器的Web应用,然而,它并非一枝独秀,还有其他的选择也值得我们去探究,比如Google的GWT和Cappuccino。

查看英文原文:SproutCore: An HTML 5 Application Framework

你可能感兴趣的:(SproutCore:一个HTML 5应用框架)