3
1 第 1 章简介
欢迎使用 ZK---- 一种丰富 Web 应用程序的最简单方式。
此开发手册买描述了 ZK 的概念和功能。关于如何安装配置 ZK 的环境,请参阅
Quick Start Guide 。如果想得到的各个组件 (components) 的属性和方法的详细
描述,请参阅 Developer's Reference 。
这章描述了 Web 程序, AJAX 技术和 ZK 项目的历史背景。如果你想马上了解 ZK
的功能,可以跳过这一章。
1.1
1.1
1.1
1.1
传统的
传统的
传统的
传统的 Web
Web
Web
Web 应用程序
应用程序
应用程序
应用程序
以 简单高效交换文档为目的的 Web 技术,例如超文本传输协议 (HTTP) 和超文本
标记语言 (HTML) ,都来源于单页性 (page-based ) 和无状态 (stateless-
communication) 的模式。 在这种模式中, 一个页面是自给自足 (self-contained )
的,并且是沟 通客户端与服务器端的最小单位。
随 着网络俨然成为应用开发的默认平台,这种模式面临着巨大的挑战:对于表
现当今应用程序中复杂性的无能为力。举个例子,为了给客户报价,你或许必 须
打开另一 个页面来查询此客户的交易记录, 再打开一个页面来显示当前的价格
,
还得开一个页面来存储当前信息。 用户被迫离开他正在工作的页面, 并且在几 个
页面间来回浏 览。这很容易迷失,混淆,结果是把客户弄得不愉快,销售机会
的损失和低生产力。
在这种单页性 (page-based ) 的模式上开发一个现代的应用程序也是一个极大的
挑战。 在这种模式中, 运行在服务器上的应用程序必须处理来自从语法上分析 请
求,送出回应 ,连接用户从一个页面到另一个页面路由的一切,并且处理用户
的各种错误。 数十种框架,例如 Struct , Tapestry 和 JSF ,随即出现用来简 化
4
开发过程。由于单页性 (page-based) 模式与现代模式之间的巨大差 别,学习和
使用这些框架并不是一个愉快的过程, 更不要提直觉感知 (intuition) 和简化了
。
1.2
1.2
1.2
1.2
点对点
点对点
点对点
点对点 (Ad-hoc)AJAX
(Ad-hoc)AJAX
(Ad-hoc)AJAX
(Ad-hoc)AJAX 应用
应用
应用
应用
经过数十年的演变, Web 应用已经从静态 HTML 发展到 DHTML , applets , Flash
,
最后发展到了 AJAX
[ 1 ]
(Asynchronous JavaScript and XML ,非同步的
JavaScript 和 XML ) 。 通过谷歌地图及推荐 (Google Maps and Suggest) 的说明
,
AJAX 技术通过提供与桌面应用程序同等水平的互动性和反应能力给 Web 应用带
来了新生命。 不同于 applets 或 Flash
,
AJAX 基于标准的浏览器和 JavaScript
,
并且不需要专门的插件。
AJAX 是新一代的 DHTML ,就像 DHTML ,它在很大程度上依赖于 JavaScript 监听
用户活动产生的事件 , 然后动态的操纵浏览器中一个页面 ( 亦称 DOM) 的视觉表
现。此外,它更近一步,能够使与服务器的沟通异步进行,即不需要离开或提 交
整个页面。它通过引入客户与服务器间轻量级的通信 (light-weight
communication ) 打破了基于页面的模式。妥善设计, AJAX 可以给 Web 应用带 来
丰富的桌面通用组件, 而且在 Web 应用程序的活动周期内可以动态更新这些组 件
并通过应用 程序获得对组件的更多控制 。
当提供给用户需要的交互性的同时, AJAX 给已经很昂贵的 Web 应用程序开发增
加了复杂性和技术先决条件。开发 者不得不在浏览器中操纵 DOM ,并且使用不
兼容甚至是错误的 JavaScript 与服务器通信,为了更好的交互性,开发者必须
重复复制应用数据和业务逻辑 以便于浏览。这样就增加了维护成本且面临在服
务端与客户端同步数据的挑战。
底线是在关于处理请求方面,点对点 (Ad-hoc) 的 AJAX 应用与传统的 Web 应用没
有区别。开发者仍然必须解决由单页性 (page-based) 和无状态 (stateless-
communication) 模式造成的隔阂。
5
1.3
1.3
1.3
1.3
ZK:
ZK:
ZK:
ZK: 它是什么
它是什么
它是什么
它是什么
ZK 是一个事件驱动 (event-driven) 的, 基于组件 (component-based) 的, 用以 丰
富网络程序中用户界面的框架。 ZK 包括一个基于 AJAX 事件驱动的引擎
(engine) , 一套丰富的 XUL 和 XHTML , 以及一种被称为 ZUML(ZK User Interfac e
Markup Language , ZK 用户界面标记语言 ) 的标记语言。
有了 ZK , 您可以利用 XUL 和 XHTML 的丰富特性来呈现您的 Web
应用, 操纵它们
来
处理因用户活动而引发的事件, 就像在桌面应用程序中那样。 不同于大多数其 它
框架,就 ZK 而言, AJAX 是一种幕后 (behind-the-scene) 技术,组件内容的同
步和流水线事件 (pipelining of events) 都由 ZK 引擎自动完成。
您的用户获得了如同桌面程序的互动性和反应能力, 而您的开发仍然像开发桌 面
应用程序那样简单。
除了简单的模型和丰富的组件, ZK 也支持一种文本标记语言,称为 ZUML
。
ZUML
,
如同 HTML ,可以让开发人员设计界面而无需编程。通过 XML 的命名空间, ZUML
无缝的集成了一套不同的标签
[ 2 ]
到同一页面。目前, ZUML 支持两套标签,即 XU L
和 HTML 。
为了方便快速模型开发 (prototyping) 和定制, ZK 允许开发人员嵌入 EL 表达式
,
以及您喜欢的脚本语言,包括但不限于 Java
[ 3 ]
, JavaScript
[ 4 ]
, Ruby
[ 5 ]
and
Groovy
[ 6 ]
. 开发人员可以选择不嵌入任何脚本语言, 如果他们喜欢更严格的要 求
(discipline) 。 不同于 JavaScript 嵌入在 HTML
,
ZK 在服务器端执行所有的嵌 入
脚本。
注意一切运行在服务器端是从应用程序开发者的角度出发的。 组件开发人员必 须
平衡互动性与简单性来决定什么任务由浏览器来完成, 而什么任务由服务器来 完
成。
[ 2 ]
标签是 XML 元素。组件是在当 ZUML 网页被翻译时所产生出来的。
[ 3 ]
使用 BeanShell(http://www.beanshell.org) 的 Java interpreter 。
[ 4 ]
使用 Rhino (http://www.mozilla.org/rhino) 的 JavaScript interpreter
。
[ 5 ]
使用 JRuby (http://jruby.codehaus.org/) 的 Ruby interpreter 。
[ 6 ]
使用 Groovy (http://groovy.codehaus.org/) 的 Groovy interpreter 。
评论0
最新资源