基于GWT
的 GXT UI框架
(即EXT-GWT,ExtJs的GWT版)不但提供了企业级的丰富GWT UI组件,而且实现了MVC结构,使得GXT的可用性大大加强。通过Dispatcher,Events,View,Controller,及它的BeanModel模型很好的完成了MVC各组件的职责解耦与相互通信。下面是通过GXT 自带的Mail示例,对其MVC实现的一个概要管窺。
1.Dispatcher是整个MVC结构的调度中心,是发号命令的指挥所,是Controller的容器,所有的Controller必须通过Dispacther的add()函数向这个指挥所报到,以便由它统一调度安排,即进行消息的路由。
2.每个Controller在报到前,通常得告诉Dispather这个调度中心,我能做什么,我对什么样的命令有责任,或者说对什么样的事件感兴趣。这通常是在Controller的构造函数中,通过registerEventTypes
()函数注册自己关心的事件,以便调度中心发出相应的指令、或者说什么事件发生时,去执行相应的任务。这个可以通过Mail示例中,各Controller子类的构造函数清晰的看到。
3.各Controller完成报到后,即进入待命状态,随时接受调度中心的安排,以完成任务。
4.当用户或系统向指挥所下达一条指令时,如Mail示例初始化时,通过向Dispatcher发出了Login的登录指令,调度中心即Dispacther,随即在内部对各报到的Controller进行逐一询问,都有谁要参与这次任务,找到一个后即刻下达任务,再询问下一个Controller。注意,这里任务的下达,是要讲先来后到的,即谁先报到谁就先领受任务。至于自己在接到任务后,都要干什么,这个是下一步紧接要描述的。
5.各Controller接到调度中心的任务,准备执行前,调度中心得检查你准备好没有,没有准备好,即会让Controller通过自己的initialize()
函数进行出发前的准备工作,即进行必要的初始化。
6.Controller完成准备工作后,随即根据指令,开始自己执行相应的任务。这是通过各Controller的handleEvent
()来领命受命的。
7.到这一步,Dispacther调度中心就完成了任务的下达指令,和各Controller任务的执行流程,即完成了消息的路由。各Controller完成任务后,通过forwardToView
(),向调度中心提交任务完成报告,即进行View视图的呈现。当然,各Controller
在执行任务的过程中,也可以请求Dispatcher的协助,通过Dispatcher.forwardEvent
()来进行消息的路由。
8.View在接到Controller生成任务报告时,也可能要进行必要的准备工作,如视图的构建、布局等,这是通过View的initialize
() 来进行的。当然,也不一定要在这里进行初始化,视图也可以根据Controller下达的不同命令来执行不同的视图构造,初始化等,因此在完成初始化后,视图的handleEvent
() 紧接着也随即执行。
9.以上即是比较典型的GXT MVC各成员的互动流。值得注意的是,联系各组件的核心是AppEvent,即事件。在事件的来回传递中,可以在其中夹带执行任务时,可能所必须的各种数据信息。这一点可以在Mail示例的MailController接到用户点击了主界面左侧的某个邮箱时,完成到服务器抓取数据后,需要MailView来展现邮件的onViewMailItems
() 函数清楚的看到,它在导航到MailView视图前,包装了一个事件,并往里面塞入了从服务器抓取的所有邮件Beans,然后传给MailView视图。
一直以来,认为GXT很好的实践了一些经典的设计模式,MVC在这里堪称一个经典的轻量级MVC结构,甚至还有超越,比如Controller还支持一个父子的层级结构。如果想要体会更多的精彩,你可以深入它的源代码上下求索一番
你可以在这里
发现一篇更为详尽的GXT Mail示例的全面介绍英文。there is also another article
最新更新(2010-01-03):
从分析GXT的MVC模式到研究新近GWT开发阵营非常流行的MVP模式,收获良多,GWT2.0的几个关键核心概念的推出,个人猜测GWT开发模式会发生很大的变化,包括第三方UI组件库必须付出很大的努力,方能跟上GWT2.0的步伐,尤其是GWT2.0中UIBinder将带来组件开发的全新模式,由此打算放弃GXT,至少在GXT从内部全面支持GWT的架构体系之前不打算采用,从搜集的信息看来,GXT3.0可能会达到此目标,不过,感觉是遥遥无期的事情。
PS:在此文的回复中,我有提到GWT官方文档中有一篇关于MVP的介绍,对该文提及的源码在一次无意的搜索中找到,现在上传上来,有需要的同学可以下载
分享到:
相关推荐
NULL 博文链接:https://mydownload.iteye.com/blog/1338869
GXT 学习的好书, 帮助你尽快进入GXT.
基于GXT的RPC与MVC实现登录和退出功能
目前最适合gxt初学者学习的教程
浪曦原创]GXT系列+第1讲+GXT_GWT的安装.
GXT技术路线实现思路、原理讲解、代码结构介绍
extjs gwt gxt 学习资源 ajax技术
GXT Cascade ComboBox Samples
gxt初学进阶教程,教你一步一步使用gxt,容易上手,例子很详细
这是GTA4里的源文件american.gxt
贡献一个GXT项目给大家,希望对大家有所帮助!
GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo ...
gwt 文件上传 gxt文件上传
gxt-api-2.2.1帮助文档 。
GWT,GXT的JAR包以及源代码,需要的朋友可以下载。 谷歌推出的WebUI的JAVA的库。谢谢大家下载
gxt-api-2.2.5 sdk doc 即ext-gwt api doc
本资源是目前的最新版本(9/15/11) gxt的工具非常之少,在CSDN还有一个gxt-2.1.1(2/2/2010)链接就不提供了,大家根据需要选择下载。
一步一步教你新建GXT(EXT-GWT)项目
GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4 jar
这个是官方的英文帮助,对大家开发有帮助。里面描述所有gxt 的类的用法