AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

使用 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:542971
用户头像

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

关注

评论

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

Spring IOC 和 DI

再见孙悟空

spring

Windows中使用vagrant+virtual box创建Docker

Java收录阁

Docker vagrant

怎样打造用户喜爱的产品

孙苏勇

思考 产品设计 读书

使用Vue+Highcharts绘制中国地图

kos

Vue 大前端

MongoDB入门笔记

编程随想曲

sql mongodb

做成事情,唯有实干,没有捷径

Yolanda

有问必答(2020-03-28):活着是为了什么?

冯夷

生活

有问必答(2020-04-23):为什么读书?怎么读书比较高效?

冯夷

你问我答

小小说

冯夷

如何写作一本书(1):写前须知

英子编辑

技术 写作 读书

设计一个地铁路线规划小工具

流沙

开源 后端

一篇文章教你服务器OOM后如何快速定位处理问题

Java OOM 系统故障

回"疫"录(7):关键时刻稳住别浪

小天同学

疫情 回忆录 现实纪录 纪实

Angular的遍历,默写一遍。

玉龙BB

大前端 angular 前后端分离 集合

程序猿 Windows 10 日常使用软件推荐

夏天

程序员 日常软件 windows

「颜值即正义」那些管UI小姐姐要来的网站

童欧巴

CSS 效率工具 大前端 UI

有问必答(2020-04-24):如何做时间管理/任务管理?

冯夷

你问我答

技术“大跃进”进行中

冯夷

基础设施

在 VPS 里搭建 Drone CI 持续集成构建系统

Gadzan

Docker ci DevOps cicd 持续集成

关于需求评审和讲解的一些思考

Yezhiwei

媒体的经营 04 | 难在:有所表达,影响决策

邓瑞恒Ryan

创业 媒体 技术社区

如何表达自己的感情?

zkh

我的第一个 100K app

道哥

ios swift 自由职业 独立开发者 App

万物皆逝

冯夷

生活

从“中国GPL诉讼第一案”聊聊开源软件的license许可证

赵新龙

GitHub 开源 许可证

高并发下作余额扣减的一些经验

流沙

后端

使用Kubeadm搭建Kubernetes集群

Java收录阁

Kubernetes k8s

疫情故事一则 | 庆祝北京应急响应调为二级

赵新龙

滴滴 顺风车

ELK环境搭建

Geek_0o5u34

elasticsearch Logstash Kibana ELK

一文学会设计模式

泰伦卢

c++ 互联网 极客 设计模式 架构模式

Firefox浏览器背后的力量,Mozilla基金会的“生财”之道

赵新龙

firefox 开源 基金会

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