使用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
相關閱讀:
相關文章
- Go 編寫 Web 應用GoWeb
- 使用Golang語言編寫Hello World Web應用GolangWeb
- 使用rust編寫dwm status-bar應用程式Rust
- 使用flutter編寫一款視訊應用Flutter
- 用PHP編寫Android應用程式PHPAndroid
- 使用Golang的Gin框架和vue編寫web應用Golang框架VueWeb
- 使用Intellij Idea編寫Spark應用程式(Scala+SBT)IntelliJIdeaSpark
- HTML5遊戲開發(二):使用TypeScript編寫程式碼HTML遊戲開發TypeScript
- 使用 TypeScript 編寫 SAP UI5 應用的準備工作TypeScriptUI
- dotnet 透過 Elmish.WPF 使用 F# 編寫 WPF 應用
- [譯] 如何編寫全棧 JavaScript 應用全棧JavaScript
- 編寫友好的命令列應用程式命令列
- 如何不編寫 YAML 管理 Kubernetes 應用?YAML
- Python 發展趨勢:與 Rust 深度融合、更易於編寫 Web 應用PythonRustWeb
- HTML5離線應用與客戶端儲存HTML客戶端
- Qt 編寫應用支援多語言版本--一個GUI應用示例QTGUI
- Flutter學習指南:編寫第一個應用Flutter
- 編寫執行緒安全的JSP應用程式執行緒JS
- 為什麼我拒絕用Kotlin編寫安卓應用?Kotlin安卓
- Flutter學習指南:編寫第一個Flutter應用Flutter
- Flutter入坑指南:編寫第一個Flutter應用Flutter
- 用vim編寫markdown
- URL編碼:原理、應用與安全性
- Numba編譯器的介紹與應用編譯
- 使用THEOS編寫Tweak
- HTML5應用 + Cordova = 平臺相關的混合應用HTML
- HTML5應用+Cordova=平臺相關的混合應用HTML
- HTML5遊戲開發(三):使用webpack構建TypeScript應用HTML遊戲開發WebTypeScript
- 放棄Javascript-使用kotlin編寫react前端應用之todoListJavaScriptKotlinReact前端
- What does -> do in clojure?
- Spring Boot應用,使用native編譯與不使用的啟動時間和記憶體佔用對比Spring Boot編譯記憶體
- 【保姆級教程】如何用Rust編寫一個ChatGPT桌面應用RustChatGPT
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- HTML5 應用程式快取簡介HTML快取
- 使用Visual Studio Code編寫和啟用ABAP程式碼 (上)
- 前端與編譯原理——用JS寫一個JS直譯器前端編譯原理JS
- 前端與編譯原理——用 JS 寫一個 JS 直譯器前端編譯原理JS
- 用 Vue 編寫抽象元件Vue抽象元件