HTML 5應(yīng)用框架SproutCore初探
SproutCore的計劃是成為一個HTML 5應(yīng)用框架,最近將發(fā)布1.0版。這個框架的目標(biāo)是在無需瀏覽器插件的情況下,在瀏覽器中提供極佳的桌面效果。SproutCore主要采用的是JavaScript、HTML以及CSS,因此對后端沒有什么限制,這是其優(yōu)勢所在。
下面是InfoQ近日對Sproutit總裁兼CEO Charles Jolley進(jìn)行的訪談,以了解即將到來的發(fā)布。
到底是什么讓SproutCore成為一個HTML 5應(yīng)用框架?
現(xiàn)在有不少Web框架開始使用HTML 5中的一些新特性(如離線存儲、HTML5 ApplicationCache等)來構(gòu)建富本地(rich native-class)應(yīng)用,而SproutCore則是其中之一。SproutCore在那些使用HTML 4特性的老的瀏覽器上工作良好,然而我們期待未來5年兼容于HTML 5的瀏覽器,如Safari 4、Chrome及Firefox 3.5等能成為主流。
對于我來說,HTML 5將成為Web上最激動人心的事情,因此我們開發(fā)了SproutCore。
SproutCore 1.0正式版何時發(fā)布?
今年秋天發(fā)布,但在這之前就將有構(gòu)建在SproutCore 1.0之上的應(yīng)用了。目前來看,其相當(dāng)穩(wěn)定,因為在過去的一年中我們添加了5,000多個單元測試,涵蓋了每一個特性。在過去的一年當(dāng)中,我們幾乎重寫了SproutCore構(gòu)建工具與JavaScript框架的每一部分,目的就是保持API的穩(wěn)定性并對性能進(jìn)行了極大的改進(jìn)。但我認(rèn)為SproutCore 0.9及之前版本的主要目的是為了證明我們可以在瀏覽器中構(gòu)建桌面級的應(yīng)用,而SproutCore 1.0則是保證其核心技術(shù)能夠平滑的使用且具備極強的可靠性。我很高興地看到我們實際上已經(jīng)超過了自己的目標(biāo)。SproutCore 1.0無疑是我們最杰出的成就。
所有的文檔以及站點更新之類的工作會隨著1.0版的發(fā)布而完成么?
當(dāng)然了。事實上,我們剛剛將API文檔放在了http://docs.sproutcore.com上,同時又開發(fā)了一個文檔查看器。http://demo.sproutcore.com上還有很多示例應(yīng)用,其中包括一些將于不久之后開源的完整的端到端示例。
為什么要使用SproutCore而不是GWT或是Cappuccino之類的框架?
一般來說,嘗試過GWT或是Cappuccino的人們都會由于種種原因而轉(zhuǎn)向SproutCore。其中性能問題是首當(dāng)其沖的要素。這三個框架(GWT、Capp及SproutCore)在富Web應(yīng)用上的表現(xiàn)都非常棒。但如果構(gòu)建的應(yīng)用非常復(fù)雜,瓶頸則很快就會出現(xiàn),尤其在應(yīng)用最初的加載階段更是如此。而在這方面,SproutCore應(yīng)用的表現(xiàn)是可圈可點的。第二個因素就是可定制化的能力。使用GWT和Cappuccino開發(fā)時,我們無需總與瀏覽器打交道,而是在其Java或是Objective-J沙箱中進(jìn)行。這種方式很不錯,但如果想要探究其底層那可就不好辦了。SproutCore也提供了非常豐富的功能,但都是基于普通的JavaScript,這樣你就能隨心所欲的使用了。
對于視圖層來說,為何從Ruby(0.9)轉(zhuǎn)變成了純JavaScript(1.0)?
主要原因有二。首先,一旦1.0版完成后,我們打算開發(fā)一個支持拖拽的UI設(shè)計器。而JavaScript使這一切成為可能。事實上,SproutCore 1.0的核心程序庫已經(jīng)對UI設(shè)計器的開發(fā)提供支持了。我們只需完成設(shè)計器應(yīng)用本身即可。其次,也是更加重要的原因,那就是性能問題。如果只使用JavaScript編寫代碼,然后讓SproutCore處理所有的HTML和CSS的話,我們可以通過一些技巧提高應(yīng)用的速度,哪怕是IE也沒問題??偟膩碚f,SproutCore新的視圖層的速度要比之前版本的快10倍多(其實之前版本的也夠快了)。此外還有一個好處,那就是純JavaScript會極大地簡化應(yīng)用的開發(fā),因為開發(fā)者不會陷入兩種編程語言的泥潭中,一種語言走天下。
DataStore API能從Java Server上獲取數(shù)據(jù)么?RDBMS(如MySQL或Oracle等)又如何呢?
你可以使用任何喜歡的后端,沒問題。事實上,大家在學(xué)習(xí)Todos Tutorial(http://wiki.sproutcore.com/Todos%C2%A0Intro)時會發(fā)現(xiàn)我們可以從三種不同的服務(wù)器端技術(shù)中進(jìn)行選擇。雖然Java不在其中,但我想有人一定已經(jīng)實現(xiàn)了。最酷的就是SproutCore應(yīng)用僅僅是由HTML/JS/CSS構(gòu)成的。后端到底采用什么技術(shù)是無所謂的,因為SproutCore應(yīng)用會通過Ajax與之交互。
能否在SproutCore應(yīng)用中嵌入其他視圖內(nèi)容(比如視頻、Flash以及音頻等等)呢?
當(dāng)然了!大家可以通過Safari 4運行我們提供的視頻示例(http://demo.sproutcore.com/video/)。該示例使用了HTML5的video標(biāo)簽。SproutCore 1.0已經(jīng)不再依賴Prototype了,相反我們開發(fā)了自己的SproutCore JS-library。這意味著如果你現(xiàn)有的代碼使用到了jQuery、ExtJS、YUI甚至是Prototype,你都可以將其嵌入到SproutCore應(yīng)用中。
SproutCore 1.1的路線圖確定下來了么?
還沒有。我們現(xiàn)在把所有精力都放在了SproutCore 1.0上,力求做到極致。1.1的開發(fā)方式與1.0將有很大不同,后者主要是憑借一家公司的一己之力完成的,而前者將要依靠社區(qū)的力量來實現(xiàn),因此我期望SproutCore 1.0的發(fā)布能引起更多人的注意。
SproutCore的目標(biāo)是構(gòu)建只依賴于瀏覽器的Web應(yīng)用,然而,它并非一枝獨秀,還有其他的選擇也值得我們?nèi)?A id=xwgx title=探究 >探究,比如Google的GWT和Cappuccino。
【編輯推薦】