使用Google App Engine、Google Closure Library与Clojure编写HTML5应用
上周,Freiheit.com的CTO Stefan Richter在慕尼黑舉辦的Google開(kāi)發(fā)者日上談到了他對(duì)于使用HTML 5與Google App Engine編寫富Internet應(yīng)用的愿景。特別地,他認(rèn)為相對(duì)于基于服務(wù)器端的頁(yè)面渲染來(lái)說(shuō),基于HTML 5來(lái)構(gòu)建客戶端組件會(huì)更加困難。
在之前的Web開(kāi)發(fā)中,厚重的客戶端應(yīng)用模型都是基于Widget、事件以及事件處理器,這經(jīng)常會(huì)導(dǎo)致復(fù)雜的事件處理鏈,而這一切會(huì)造成維護(hù)的 夢(mèng)魘。在兩層的客戶端應(yīng)用模型中,人們甚至?xí)苯訌氖录幚砥髦性L問(wèn)數(shù)據(jù)庫(kù)。借助于服務(wù)器端的頁(yè)面渲染,人們可以創(chuàng)建完整的頁(yè)面,每次都是一個(gè)請(qǐng)求,一個(gè) 響應(yīng)。
Stefan認(rèn)為借助于HTML 5,“你可以在客戶端生成”越來(lái)越多的HTML代碼。他們所嘗試的一種方式就是使用Google Closure Templates。
Closure Templates是個(gè)客戶端與服務(wù)器端的模板系統(tǒng),你可以使用它動(dòng)態(tài)構(gòu)建可重用的HTML與UI元素。Closure Templates分別針對(duì)JavaScript與Java提供了相應(yīng)的實(shí)現(xiàn),這樣你就可以在服務(wù)器端與客戶端使用同樣的模板了。
他還推薦集中編寫事件處理器,只在必要的情況下將狀態(tài)封裝到客戶化Widget中。
從后端視角來(lái)看,他提出了這樣一個(gè)問(wèn)題:“我們真的需要類與對(duì)象來(lái)傳遞數(shù)據(jù)嗎?”。他們可以通過(guò)Clojure Macros在服務(wù)器端生成數(shù)據(jù)訪問(wèn)代碼。同樣的數(shù)據(jù)結(jié)構(gòu)既可以用在客戶端,也可以用在服務(wù)器端:
我們使用鍵/值對(duì)作為主要的數(shù)據(jù)結(jié)構(gòu)。我認(rèn)為這是應(yīng)用部署的未來(lái)。不再有阻抗失配、不再有ORM、不再有數(shù)據(jù)轉(zhuǎn)換。 Clojure內(nèi)部使用了鍵/值對(duì)形式。我們可以從Google Datastore上獲取到他們,也可以將其發(fā)送給Google Datastore,還能以JSON形式將其發(fā)送到客戶端。Stefan建議大家盡其所能地嘗試使用他們,就按照“鍵/值”對(duì)形式來(lái)用,編寫沒(méi)有副作用的功能性JavaScript代碼。
在演講中,他對(duì)下一代的RIA給出了一系列的通用原則:
只需要閱讀代碼就應(yīng)該理解他們的行為
不要嘗試在瀏覽器中編寫窗口風(fēng)格的桌面應(yīng)用
準(zhǔn)備好在客戶端渲染大多數(shù)HTML代碼
不要以Java形式編寫JavaScript代碼,忘記你所學(xué)的Java吧
提前規(guī)劃好離線功能(以及同步數(shù)據(jù))
你需要想好如何處理并發(fā)修改問(wèn)題,因?yàn)橛脩艉苡锌赡軙?huì)同時(shí)修改同一條數(shù)據(jù)
你需要推送通知
將客戶端的異常記錄到服務(wù)器上
Deadline應(yīng)用就是根據(jù)這些原則創(chuàng)建的。
HTML 5(以及云)會(huì)改變RIA的架構(gòu)與編程模型么?開(kāi)發(fā)者與架構(gòu)師準(zhǔn)備好了么?你的想法如何?
原文鏈接:Writing HTML5 Applications with Google App Engine, Google Closure Library and Clojure
譯文鏈接:http://www.infoq.com/cn/news/2010/11/html5-gae
相關(guān)閱讀:
參加IE9開(kāi)發(fā)大賽 贏取現(xiàn)金大獎(jiǎng)
微軟最頂級(jí)平臺(tái)技術(shù)會(huì)議PDC10全程視頻播放
Microsoft Web平臺(tái)——優(yōu)秀項(xiàng)目展示
Windows Phone 7 MSDN開(kāi)發(fā)中心
總結(jié)
以上是生活随笔為你收集整理的使用Google App Engine、Google Closure Library与Clojure编写HTML5应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [小结]硬盘分区的知识与意义
- 下一篇: 美军称五角大楼遭网络袭击 2.4万份敏感