使用GoogleAppEngine、GoogleClosureLibrary與Clojure編寫HTML5應用

狼人2007發表於2019-05-10

上週,Freiheit.com的CTO Stefan Richter在慕尼黑舉辦的Google開發者日上談到了他對於使用HTML 5與Google App Engine編寫富Internet應用的願景。特別地,他認為相對於基於伺服器端的頁面渲染來說,基於HTML 5來構建客戶端元件會更加困難。

在之前的Web開發中,厚重的客戶端應用模型都是基於Widget、事件以及事件處理器,這經常會導致複雜的事件處理鏈,而這一切會造成維護的 夢魘。在兩層的客戶端應用模型中,人們甚至會直接從事件處理器中訪問資料庫。藉助於伺服器端的頁面渲染,人們可以建立完整的頁面,每次都是一個請求,一個 響應。

Stefan認為藉助於HTML 5,“你可以在客戶端生成”越來越多的HTML程式碼。他們所嘗試的一種方式就是使用Google Closure Templates。

Closure Templates是個客戶端與伺服器端的模板系統,你可以使用它動態構建可重用的HTML與UI元素。Closure Templates分別針對JavaScript與Java提供了相應的實現,這樣你就可以在伺服器端與客戶端使用同樣的模板了。

他還推薦集中編寫事件處理器,只在必要的情況下將狀態封裝到客戶化Widget中。

從後端視角來看,他提出了這樣一個問題:“我們真的需要類與物件來傳遞資料嗎?”。他們可以通過Clojure Macros在伺服器端生成資料訪問程式碼。同樣的資料結構既可以用在客戶端,也可以用在伺服器端:

我們使用鍵/值對作為主要的資料結構。我認為這是應用部署的未來。不再有阻抗失配、不再有ORM、不再有資料轉換。

Clojure內部使用了鍵/值對形式。我們可以從Google Datastore上獲取到他們,也可以將其傳送給Google Datastore,還能以JSON形式將其傳送到客戶端。

Stefan建議大家盡其所能地嘗試使用他們,就按照“鍵/值”對形式來用,編寫沒有副作用的功能性JavaScript程式碼。

在演講中,他對下一代的RIA給出了一系列的通用原則:

只需要閱讀程式碼就應該理解他們的行為

不要嘗試在瀏覽器中編寫視窗風格的桌面應用

準備好在客戶端渲染大多數HTML程式碼

不要以Java形式編寫JavaScript程式碼,忘記你所學的Java吧

提前規劃好離線功能(以及同步資料)

你需要想好如何處理併發修改問題,因為使用者很有可能會同時修改同一條資料

你需要推送通知

將客戶端的異常記錄到伺服器上

Deadline應用就是根據這些原則建立的。

HTML 5(以及雲)會改變RIA的架構與程式設計模型麼?開發者與架構師準備好了麼?你的想法如何?

原文連結:Writing HTML5 Applications with Google App Engine, Google Closure Library and Clojure

譯文連結:http://www.infoq.com/cn/news/2010/11/html5-gae

相關閱讀:

參加IE9開發大賽 贏取現金大獎

微軟最頂級平臺技術會議PDC10全程視訊播放

Microsoft Web平臺——優秀專案展示

Windows Phone 7 MSDN開發中心


相關文章