组件的生命周期
本章将讲解页面加载和更新的生命周期
页面加载的生命周期
zk需要4个步骤来加载和翻译一张zuml页面:
1.页面的初始化
2.创建组件
3.事件的处理
4.rendering
下面分别详细的介绍上述4个阶段
页面初始化
在这个阶段,zk启动了init函数,如果没有定义这样的处理指示,则跳过。
对于每一个init处理指示都有一个class属性,一个指定的类被创建,然后它的doInit方法被调用。这个类将会进行什么操作呢,当然,这取决于你应用的要求。
<?init class="myinit"?>
另一种指定处理指示的形式是像下面这样定义zscript文件。然后,这个zscript文件将会在本阶段解释。
<?init zscript="/my/init.zs"?>
注意在这个阶段,页面还没有放到桌面。
组件创建阶段
在这个阶段,zk加载器解释zuml页面。它进行组件的创建和初始化。分下面几步进行。
1.对于每一个组件,检查它的if和unless属性来决定组件的有效性。如果是无效的,则它和它的子组件均被忽略。
2.在foreach属性中指定了items的集合,zk对每一个item重复下面的步骤。
3.基于元素的名字创建组件,或者使用use属性指定的类
4.按zuml页面上指定属性次序的初始化成员
5.解释嵌套的元素,重复整个过程
6.如果组件继承org.zkoss.zk.ext.AfterCompose接口,调用afterCompose函数。
7.在所有的子组件都创建后,onCreate事件被发送到这个组件,应用可以在之后初始化一些元素的内容。Notice that the oncreate events are posted for child components first.
Note: an developer can perform some application-specific initialization by listening to the oncreate event or implementing afterCompose. AfterCompose is called in the component create phase,while the oncreate event is handled by an event listener.
an event listener is free to suspend and resume the execution(such as creating modal dialogs),while AfterCompose is a bit faster since no need to fork another thread.
事件处理阶段
在这个阶段,zk为桌面的每个事件调用每个监听器。
一个独立的线程开始调用每一个监听器,所以在不影响其他事件处理的情况下可以被挂起。
在处理的过程中,一个监听器可能会触发其他的事件,参考event listening and processing章节。
the rendering phase
在所有的事件处理了之后,zk renders这些组件成为一个规则的html页面,然后将其发送到浏览器。
为了render组件,redraw方法被调用。在这个方法里面,一个组件的执行将不会改变组件的内容。
更新页面的生命周期
zk au engine 处理zk请求需要3个步骤:处理请求,处理事件,rendering
zk au engine 将zk请求传递到队列(一个桌面一个队列)。因此,对于一个桌面,请求是被顺序处理的。对于不同的桌面,请求是平行处理的。
请求处理阶段
根据请求,zk au engine可能更新被影响的组件的内容,尽管在客户端看来内容是一样的。
然后将相应的事件提交到队列。
事件处理阶段
这个过程和“组件创建阶段”相同。在一个独立的线程中顺序的对事件进行处理。
the rendering phase
在所有的事件被处理了以后,zk renders 影响的组件,创建相应的zk回应,然后将这些回应发送回客户端。然后client engine更新dom tree.
模型
组件即使在同一张页面里面也可能有多种不同的表现。这种观念叫做mold。程序员可以通过使用component接口的setMold方法动态的改变mold。所有的组件都有一个名为default的mold。一些组件可能支持多个mold,如tabbox同时支持default和accordion。
<tabbox><!-- if not specified, the default mold is assumed. -->
<tabs>
<tab label="Default"/>
</tabs>
<tabpanels>
<tabpanel>
<tabbox mold="accordion">
<tabs>
<tab label="First Accordion"/>
<tab label="Second Accordion"/>
</tabs>
<tabpanels>
<tabpanel>The first panel.</tabpanel>
<tabpanel>The second panel.</tabpanel>
</tabpanels>
</tabbox>
</tabpanel>
</tabpanels>
</tabbox>
组件的垃圾回收
Unlike many component-based GUI, ZK has no destroy or close method for components. Like W3C
DOM, a component is removed from the browser as soon as it is detached from the page. It is
shown as soon as it is attached to the page.
More precisely, once a component is detached from a page, it is no longer managed by ZK. If the
application doesn't have any reference to it. The memory occupied
相关推荐
我做的zk组件开发代码,已经在eclipse上运行的
zk内部多种组件的使用说明,提供了zk种各种组件的使用方法,代码示例。
zk组件封装demo,开发环境:zk6.0,maven,eclipse juno, jdk1.5
zk组件开发指南 部分翻译 zk组件开发指南 部分翻译
ZK开发手册(Developer's Guide)的中文翻译版一部分已经公开在zk-devguide 开发手册全部共有14章,超过200页,信息非常齐全: 第1到3章是ZK的简介以及基础构造的说明, 第4,5章介绍组件的周期以及如何处理事件....
ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
ZK开发手册中文版,里面有各种ZK组件的使用方法
最新的前端框架ZK开发必备 ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface ...
zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架
zk后台api很全的,对于学习ZK很有用的。
ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以及以 XML 为基础的使用介面设计语言 ZK User-interfaces Markup Language (ZUML)。
ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册
zk-6.5.0.zip ZK 6.5.0 Sep 12, 2012 * Features ZK-447: The file upload allows users to drag and drop local files (HTML5) ZK-1241: ZK Client Widget support swipe event for tablet/mobile device ZK-...
最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC
zookeeper核心包之一 ZK Studio是一个可视化的集成开发环境,提供了跨越整个项目生命周期的直观的工具
利用ZK框架设计的web应用程序具备丰富的胖客户端特性和简单的设计模型.ZK包括一个基于AJAX可自动进行交互式操作的事件驱动引擎和一套兼容XUL的UI组件.利用直观的事件驱动模型,你可以用具有XUL特性的组件来表示你的...
Librerias ZK 32 Bits Windows
学习zk的一个框架展示文档。里面含有zk的安装组件以及studio,教你如何安装zk,如何使用zk,是开始学习zk 的一个好文档。
最新的zk核心jar用到zk的可以下载很实用的东西