使用Google App Engine、Google Closure Library与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
相关阅读:
参加IE9开发大赛 赢取现金大奖
微软最顶级平台技术会议PDC10全程视频播放
Microsoft Web平台——优秀项目展示
Windows Phone 7 MSDN开发中心
使用Google App Engine、Google Closure Library与Clojure编写HTML5应用相关推荐
- 如何使用Python的Flask和Google App Engine构建网络应用
by Tristan Ganry 由Tristan Ganry 这是一个小型教程项目,用于为初学者学习Flask,API和Google App Engine. (This is a small tut ...
- 在Mac OS X Snow Leopard中设置Google App Engine [失败]
1. 在这里下载Google App Engine SDK for Python: http://code.google.com/intl/zh-CN/appengine/docs/python/ge ...
- web服务r oauth_通过OAuth访问社交网站,第3部分,将Web Twitter客户端部署到Google App Engine...
存档日期:2019年5月16日 | 首次发布:2010年4月13日 OAuth是一种开放协议,使用户可以在不同的网站之间共享其受保护的资源,而不会冒暴露用户凭据的风险. 本系列的第1部分介绍了OAut ...
- java的app构建代码_适用于Java的Google App Engine,第2部分,构建杀手级应用
java的app构建代码 存档日期:2019年5月14日 | 首次发布:2009年8月11日 像Google App Engine for Java™这样的云平台的全部要点是能够想象,构建和部署可扩展 ...
- 闭关纪要17.Google app engine的简单应用
在上面用了十一篇博客的文章详细的介绍了,Step1账户登录系统之后,从现在开始,继续写闭关纪要,因为Step1账户登录系统也是闭关工作的一部分,因此保留序号,这篇纪要在上次的闭关纪要5.WML,UTF ...
- Google App Engine技术架构之Google App Engine架构
上一篇我们介绍了Google App Engine的基本信息,本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍. 设计理念 App Engine在设计 ...
- Google App Engine 的简易教程(转载)
源地址:http://peopleyun.com/?p=868 本文将通过一个简单的例子,来介绍大家如何创建一个简单App Engine程序,首先,给大家介绍一下Google App Engine. ...
- Google App Engine给我们带来了什么?
这几天正在研究Google App Engine,感觉很不错. 网址在这里. http://code.google.com/intl/zh-CN/appengine/docs/whatisgoogle ...
- 开始您的第一个Google App Engine应用
很多人想玩 Google App Engine ,最起码可以当个免费的虚拟主机来用.那就先说说费用情况. 目前,GAE 每个帐号可以开通10个应用,每个应用免费配额1G磁盘空间,这样下来就是10G.另 ...
最新文章
- 赛迪研究院发布《2018年中国自动驾驶产业发展及投资价值白皮书》!
- do{}while(0) 作用
- linux系统中离线安装python3.7过程记录
- SAP HR模块复制PA30的人员
- 源码包编译PHP5.6,源码编译安装php5.6
- java和python哪个学习编程_初学编程,选Java还是Python?
- mysql字符集变为gbk_MYSQL数据库默认latin1字符集转换为GBK或UTF8
- JAVA知识基础(六):抽象
- 作者:沈志宏(1977-),男,博士,中国科学院计算机网络信息中心高级工程师...
- libwacom9 : Depends: libwacom-common (= 2.2.0-1) but 1.12-1 is to be installed
- Set up Ubuntu 12.04 Laptop as WiFi Hotspot (ad-hoc) to Share Wired Internet
- CCF业务总部和学术交流中心落户苏州相城
- php 表单 sql,PHP表单发布到SQL后没有任何操作
- 通过 Bitmap Font Generator 生成 fnt 与 png 文件供 cocos2d-x 中 LabelBMFont 使用达到以图片表现数字
- nginx三种负载均衡的方式
- IDEA社区版详细安装2022最新版(保姆式)
- 时钟同步显示屏(NTP时间显示屏)子母钟系统介绍
- 小程序坑录-wx.getLocation接口申请
- VLC的windows版本下载
- 游戏策划入门(1)——什么样的创意是能够实现的?
热门文章
- python获取绝对路径_python3中获取文件当前绝对路径的两种方法
- 电脑计算器_手把手教你使用初级会计机考系统计算器!
- 2.逆向分析Hello World!程序-上
- hdu3415单调队列
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
- 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
- 【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )
- 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( K-Means 方法缺陷 | 基于密度聚类原理及概念 | ε-邻域 | 核心对象 | 直接密度可达 | 密度可达 | 密度连接 )
- 10件开发者和老板都要知道的HTML5的那些事