写点什么

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

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

关注

评论

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

MySQL 指令

武师叔

8月月更

Python 教程之输入输出(7)—— 如何在 Python 中不使用换行符进行打印?

海拥(haiyong.site)

Python 8月月更

详解中断系统

timerring

8月月更

《编程的原则》读书笔记(一):编程的前提和准则

Chares

软件工程 软件开发 程序开发 编程原理

Spring(四、配置数据源)

开源 MySQ Druid 8月月更

【LeetCode】算术三元组的数目Java题解

Albert

LeetCode 8月月更

为什么我要说:柯里化 == 闭包+递归?

掘金安东尼

JavaScript 前端 8月月更 柯里化

jvm(一 )内存区域的划分

想要飞的猪

JVM JVM运行时数据区

STM32+移远MC20模块采用MQTT协议登录OneNet上传GPS数据

DS小龙哥

8月月更

模块九(电商秒杀系统)

Geek_701557

毕业总结

Geek_701557

Go-Excelize API源码阅读(三)——OpenReader()

Regan Yue

Go 开源 源码分析 8月日更 8月月更

2022秋招前端面试题(四)(附答案)

helloworld1024fd

前端面试

Spring Security OAuth实现GitHub快捷登录

阿提说说

Spring Security OAuth

2022-Java后端工程师面试指南-(消息队列)

自然

Rocket Rabbit MQ 8月月更

深入浅出边缘云 | 6. 监控与遥测

俞凡

架构 边缘计算 网络 深入浅出边缘云

OpenHarmony像素单位

坚果

开源 OpenHarmony 8月月更

Spring(三、依赖注入)

开源 bean Spring JPA 8月月更

全面了解Java中的15种锁概念及机制!

TimeFriends

8月月更

2022-Java后端工程师面试指南-(计算机网络)

自然

网络 8月月更

开源一夏 | 对于jQuery选择器和动画效果停止动画的实战心得【前端jQuery框架】

恒山其若陋兮

开源 8月月更

Java+EasyExcel实现文件导入导出

Bug终结者

Java 8月月更

mysql进阶(二十八)GRANT REVOKE用法详解

No Silver Bullet

MySQL 签约计划第三季 8月月更 grant revoke

聊聊电源自动切换电路(常用自动切换电路总结)

矜辰所致

电路设计 8月月更 电源自动切换

2022秋招前端面试题(三)(附答案)

helloworld1024fd

前端面试

开源一夏 | 这么火的ES,SpringBoot结合ElasticSearch7实现多条件复合查询

知识浅谈

开源 8月月更

2022-Java后端工程师面试指南-(SSM)

自然

spring cloud stream Java core 8月月更

什么是 Office Open XML 文件格式

汪子熙

xml 微软 Office 8月月更 openOffice

数据治理(二):数据治理功能方面

Lansonli

大数据 数据治理 8月月更

一文带你搞懂OAuth2.0

闫同学

Go 后端 OAuth 2.0

企业文化如何治好“企业内耗”?

涛哥 数字产品和业务架构

企业文化 企业架构

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