50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

使用 Google App Engine、Google Closure Library 与 Clojure 编写 HTML 5 应用

  • 2010-11-15
  • 本文字数:1024 字

    阅读完需:约 3 分钟

上周,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

2010-11-15 06:543042
用户头像

发布了 88 篇内容, 共 272.4 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

重温算法之颜色分类

自由

算法刷题 7月月更

iOS 中的 Protocol

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

Ceph分布式存储初步认识(一)

Lansonli

私有云 Ceph 云存储 7月月更

记一次uniapp的经历

是乃德也是Ned

uni-app 7月月更

Qt中 connect的多种方式

小肉球

qt 7月月更

《高绩效教练》:如何用提问激发潜能?

郭明

读书笔记

shell脚本定时备份mysql数据库

乌龟哥哥

7月月更

zookeeper-认识zookeeper

zarmnosaj

7月月更

MySQL进阶(一)主外键讲解

No Silver Bullet

MySQL 数据库 7月月更 主外键

LeetCode第二题,裂开了..

为自己带盐

LeetCode 7月月更

jQuery

Jason199

jquery js 7月月更

企业级容器安全风险与最佳实践

明亮安全观

网络安全 安全架构 容器安全

查找——顺序表的查找和有序表的查找

乔乔

7月月更

飙车资深老教练-手撸一个EventBus

芝麻粒儿

android EventBus 7月月更

不习惯的 Vue3 起步五 のapiHooks封装

空城机

Vue3 7月月更

redis安装

想要飞的猪

读书笔记之数据密集型应用的可靠性

宇宙之一粟

读书笔记 7月月更

3000字11张图硬核科普:什么是边缘计算?与云计算有什么联系和区别?

wljslmz

云计算 边缘计算 7月月更

密码密钥硬编码检查

Tom(⊙o⊙)

密码 软件安全 信息泄露 静态代码检查 密钥管理

自定义spring boot starter三部曲之一:准备工作

程序员欣宸

spring springboot 7月月更

【Docker 那些事儿】关于Namespace隔离机制的奥秘

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

Ark UI 中的问题汇总【系列 2】

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

分布式——Maven多模块管理

Java学术趴

7月月更

接口测试进阶接口脚本使用—apipost(预/后执行脚本)

Xd

接口测试

Qt | 读取文件内容并删除文件 QFile

YOLO.

File 文件操作 qt 7月月更

斐波拉契数最小步数与合法括号序列判断

未见花闻

7月月更

【萌新解题】两数之和

面试官问

LeetCode 哈希表 两数之和

到底应不应该使用 lombok

HoneyMoose

OAI L3与L2接口分析

柒号华仔

5G 7月月更

面试突击65:为什么要用HTTPS?它有什么优点?

王磊

Java 面试题

使用Google App Engine、Google Closure Library与Clojure编写HTML 5应用_架构_Jean-Jacques Dubray_InfoQ精选文章