ZK基础

 

     ZK的创意起源于用户希望web应用程序有C/S架构系统一般的互动性效果,然而各家浏览器支持的语法不一,web应用程序开发不但麻烦,出错机率也高。加上使用接口每家需求不一,程序代码重复利用性低,形成开发上相当大的成本。于是ZK团队(中国台湾地区陈志恒、叶明宪、叶明政、何政达等人)想到:既然问题出在客户端,如果让服务器端来处理会如何?由服务器接手使用者接口,由特定组件处理浏览器的语法差异,解决开发者容易出错的地方,并产生丰富的互动效果,这样一来,过去的问题就能迎刃而解。基于用户的需求、开发者的困境,以及灵光一现的各种想法,ZK的雏形于是诞生。

 

    ZK是一套开放源代码的、符合XUL/HTML标准、用Java实现的,以 AJAX/XUL/Java为基础的富客户端B/S应用系统开发框架。它为B/S系统开发带来了C/S系统开发一样体验。ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了多种丰富、可重复使用的XULHTML组件,以及以 XML为基础的介面设计语言 ZK User-interfaces Markup Language (ZUML)

ZK 提供超过70XUL组件及80XHMTL组件。包括提供 FCKeditor, Dojo, Google Maps, SIMILE Timeline等组件,使用者直接以Java控制,无需使用 JavaScript

 

ZK原理

ZK loader:    由一系列Java servlets组成,复杂接受URL request生成相应的HTML页面(包括css,javascript,ZK组件).

ZK AU(asynchronous update):   ZK异步更新引擎,负责接收Ajax requests,更新ZK组件属性,并将response返回客户端.

ZK client engine:      ZK客户端引擎,由一些列javascript组成,负责监控浏览器javascript事件队列,如果有事件触发就将事件以Ajax requests的方式发送到服务器端的ZK异步更新引擎,然后接收ZK异步更新引擎返回的应答更新页面。

 

 

 

ZK基础_第1张图片 

三元素

组件:Component (of interface org.zkoss.zk.ui.Component)

user interface (UI) object, such as a label, a button, or a tree. It defines the visual representation and behaviors of a particular user interface element. By modifying the component itself or manipulating the component structure, you can control to the visual representation of an application in the client

 

页面:Page (of class org.zkoss.zk.ui. Page)

a collection of components.

 

桌面:Desktop (of class org.zkoss.zk.ui.Desktop)

a collection of pages for serving the same URL request.

 

 

组件的生命周期

加载一个zul的页面会做以下操作

1. Page initialization

2. Component creation

3. Event processing

4. Rendering

 

ZK AU engine收到来自客户端的ZK requests会做如下三步处理:

1. Request processing

2. Event processing

3. Rendering

 

 

开发环境搭建

  JDK6.0 + Eclipse 3.4

  ZK Studio 0.9.1
(
http://studioupdate.zkoss.org/studio/update)

  ZK3.5.2(目前的最新版,见http://www.zkoss.org

 

增加XML扩张文件名

1.打开eclipse的菜单 Window Preferences. 在对话框中General Content Types

Content Types 面板Text XML

 

“Content type” 填写 *.zul,

 

 

2.创建动态web工程

File New Project.

Web Dynamic Web Project

 

 

 

3.导入ZK的库到$PRJ/WebContent/WEB-INF/lib

 

 

 

 

self指组件本身

Do you like ZK?

 

 

宏组件(Macro Components

1. Define a macro component using a ZUML page:

Username:

2. Declare the macro component in the page that is going to use it:

3. Use the macro components, which is no different from using other components:

使用宏组件要注意命名冲突问题。

 

GoogleMap

使用google map要先注册(http://www.google.com/apis/maps/),key替换下列代码中的key.

你可能感兴趣的:(IT)