写点什么

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

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

关注

评论

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

富士胶片公司完成阿里云 PolarDB 数据库开源产品兼容适配

阿里云数据库开源

polarDB PolarDB for PostgreSQL 阿里云PolarDB

面部表情识别技术在社交互动中的应用

来自四九城儿

2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长。 请输出

福大大架构师每日一题

福大大架构师每日一题

Sentieon软件应用之公共卫生机构

INSVAST

公共卫生 基因数据分析

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

阿里巴巴云原生

阿里云 微服务 云原生

面部表情识别的技术挑战与解决方案

来自四九城儿

Programming abstractions in C阅读笔记:p127-p129

codists

面部表情识别技术的神经科学基础

来自四九城儿

Go语言协程池实现第二弹

FunTester

绘出「星辰大海」:华为云Astro轻应用新手指南Ⅱ

轶天下事

软件开发必读!华为云软件开发生产线CodeArts深度体验指南

平平无奇爱好科技

解决访问 Amazon S3 对象时遇到的“访问被拒绝”错误

亚马逊云科技 (Amazon Web Services)

存储

PrecisionFDA:多组学样本错标校正挑战赛

INSVAST

数据分析 PrecisionFDA

小灯塔系列-中小企业数字化转型系列研究——协同OA测评报告

向量智库

C++类成员的访问权限以及类的封装

芯动大师

鼎友餐饮信息总监杨山海:餐饮新增长依托数智应用,用数字化打造单店盈利模型

科创人

代码随想录 Day51 - 动态规划(十二)

jjn0703

08.25 北京站|阿里云 Serverless 技术实践营( AI 专场)开放报名

阿里巴巴云原生

阿里云 Serverless 云原生

从孤勇者到边缘云行业翘楚,网心科技做对了什么?

网心科技

Grafana可观测性grpc长链接处理

盈米基金

gRPC 可观测性 Grafana

首期华为云ROMA Connect《企业集成战略与华为数字化之道》高研班在东莞圆满举办

平平无奇爱好科技

Sentieon数据质控QC模块介绍

INSVAST

数据分析 QC 质控工具

大家都在用哪些测试用例管理平台?分析不同类型团队下的4类测试管理工具

爱吃小舅的鱼

产品经理 测试管理

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

轶天下事

学习Python文件备份和恢复技术,让您的数据永不丢失!

高端章鱼哥

Python Linux

Apache Dubbo 和 Apache RocketMQ 邀您参与,ASF 亚洲峰会 5 张门票免费送

阿里巴巴云原生

阿里云 云原生

八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!

CODING DevOps

开创以API为核心的数字化变革,华为云实现API全生命周期一体化协作

平平无奇爱好科技

What's new in Pika v3.5.0

apache/dubbo-go

数据库 redis kv Redis 7 KV存储

绘出「星辰大海」:华为云Astro轻应用新手指南Ⅰ

轶天下事

质效提升 | 聊聊QA与业务测试

laofo

DevOps 研发效能 持续交付 质量赋能

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