使用GoogleAppEngine、GoogleClosureLibrary與Clojure編寫HTML5應用
上週,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
相關閱讀:
相關文章
- Clojure編寫一個階乘程式 使用遞迴遞迴
- Go 編寫 Web 應用GoWeb
- 使用Golang語言編寫Hello World Web應用GolangWeb
- 使用rust編寫dwm status-bar應用程式Rust
- 使用flutter編寫一款視訊應用Flutter
- 使用Golang的Gin框架和vue編寫web應用Golang框架VueWeb
- 使用 Swift 語言編寫 Android 應用入門SwiftAndroid
- 用PHP編寫Android應用程式PHPAndroid
- 編寫高效的MySQL應用(轉)MySql
- 使用Intellij Idea編寫Spark應用程式(Scala+SBT)IntelliJIdeaSpark
- 使用 TypeScript 編寫 SAP UI5 應用的準備工作TypeScriptUI
- 編寫友好的命令列應用程式命令列
- [譯] 如何編寫全棧 JavaScript 應用全棧JavaScript
- 編寫iOS應用程式有何不同iOS
- HTML5遊戲開發(二):使用TypeScript編寫程式碼HTML遊戲開發TypeScript
- 使用 Emacs 開發 ClojureMac
- dotnet 透過 Elmish.WPF 使用 F# 編寫 WPF 應用
- 30分鐘編寫一個Flask應用Flask
- 編寫高效能HTML網頁應用HTML網頁
- 編寫第一個HADOOP應用程式Hadoop
- 為Linux 應用程式編寫 DLL(轉)Linux
- 轉享:使用HTML5建立移動應用HTML
- 開發和部署一個簡單的Clojure Web應用Web
- Clojure 執行原理之編譯器剖析編譯
- html5之div,article,section區別與應用HTML
- 用LoadRunner編寫socket應用的測試指令碼指令碼
- 用VB編寫COM+應用時碰到問題? (轉)
- Qt 編寫應用支援多語言版本--一個GUI應用示例QTGUI
- Python 發展趨勢:與 Rust 深度融合、更易於編寫 Web 應用PythonRustWeb
- Flutter學習指南:編寫第一個應用Flutter
- 如何不編寫 YAML 管理 Kubernetes 應用?YAML
- 為什麼我拒絕用Kotlin編寫安卓應用?Kotlin安卓
- HTML5離線應用與客戶端儲存HTML客戶端
- Flutter學習指南:編寫第一個Flutter應用Flutter
- Flutter入坑指南:編寫第一個Flutter應用Flutter
- 編寫執行緒安全的JSP應用程式執行緒JS
- 如何編寫簡單的應用window視窗程式
- Xamarin iOS編寫第一個應用程式建立工程iOS