深入剖析ExtJS 2.2实现及应用连载(2):为什么要学习ExtJS
第1章 Ext概述
深入剖析EXT 2.2及应用连载 版权所有,谢绝转载 作者:彭仁夔 QQ:546711211
Ext以其绚丽的样式吸引了web开发者的眼球,以其丰富的文档和实例诱使开发者投身其中。从YUI-Ext到Ext2.0这期间吸引了无数的开发者,形成了用户众多,文档丰富的JS框架。同进也奠定了Ext的成功。本章将针对于Ext进行宏观性的概述,使读者对Ext有个整体的认识。
本章主要内容:
u 认识和如何学习Ext
u Ext的功能及说明
1.1 Ajax模式
前二年,Ajax异军突起,web2.0风靡一时。各式各样的Js类库如雨后春笋般涌出。这些框架可以分成两类,一类是以prototype、jquery为主的辅助类库。另一类以qooxdoo、Ext为主的Ajax富客户端类库。辅助类库主要为传统的web开发方式提供方便的JS开发。而富客户端类库则是完全采用Javascript来构建客户端的表现效果。
Ajax是新名词,但不是新技术。它是DOM,CSS,javascript,XML等众多成熟技术的集合。然而这个新名词的出现,引起众多的程序开发者关心,在web开发中掀起重重波澜,其主要原因是它在在web开发中扮演了一个全新角色。它改变了web开发模式,推动了web2.0的发展。
传统的web开发模式是一种请求-刷新-响应的模式。即每当用户通过单击按钮或链接向服务器发送请求时,都由服务器接收并处理。处理完毕后服务器将信息发送至浏览器进行显示。在服务器的处理时间里,浏览器是处在loading中,显示空白且处在无响应状态。用户唯一能做的就是等待,导致极差的用户体验。
在传统的web开发模式中,用户每个请求返回的都是一个显示的页面,即使是交互式的(form)的web设计。其浏览器只是被动地接收并显示页面的工具,它不能决定需要什么,请求什么,仅仅是显示服务器端传输过来的页面。而在很多情况下,请求的操作仅仅是对页面中小部分内容的修改。根本用不上抛弃当前的页面,而重新请求修改之后的新页面。
Ajax开发模式给了浏览器主动权,它可以主动地有选择地向服务器请求它所需要的数据。通过Ajax的模式,开发者可以进行一个页面对应一个完整的应用系统的设计。浏览器在得到服务器的响应之后,它可以根据响应的数据来动态修改页面的局部显示。减少网络传输。加快浏览速度,同时还提高了用户体验,不用再对着空间的loading状态发呆。
按理说Ajax模式是先进的,优秀的。但是在现实的应用中,还是有一些问题,如利于搜索引擎的搜索,用户的习惯改变等方面。于是在应用中出现了两种形式。
一种是Ajax模式和传统的web开发相结合。基本上采用传统的web开发模式,而在需要较好的用户体验的(如交互)时候就采用Ajax模式。日常用得较多的几种有:输入前提示和关连下拉选择,相片的lightBox。这样就没有改变用户形成的习惯,同时也提供了较好的用户体验。一般来讲,这种模式适用于网站开发,它主要是提供客户的浏览信息。且交互不多。
第二种形式是富客户端表现。它不像网站一样主要提供浏览的信息,而是提供给用户强大的交互功能。典型的应用有网络办公系统。这种B/S结构的应用是从C/S结构迁移过来的。用户要求是如C/S一样操作方便且UI富有表现力。在Ajax没有出现之前,Flash,applet就是为了实现这个目标。但是它们还是要客户端上装有flash,java等工具。而Ajax却是轻量级的。只需要浏览器。
现在网页的表现的处理从服务器端转移到客户端上的浏览器上,那么对于浏览器的展现的CSS,DOM,JavaScript技术就应该受到应有的重视。但是各大厂家的浏览器并不兼容。这就给于开发者一个巨大的难题,难道开发应用系统还要去精通各个浏览器吗?为了解决这个问题,同时又能方便开发者使用javascript,大量的jS框架或类库出现了。
对于ajax模式和传统的web开发相结合的web应用,我们可以通过采用prototype,jquery等在简化客户端表现层的开发。那么对富客户端呢? YUI类库采用组件的形式构建网页的小模块。但是它只是一个松散组件集。而我们需要的是如桌面应用开发那样的UI。
Dojo看是一个很前途的框架,背后有大公司支持,但是其效率等各方面不敢让人恭维。Qooxdoo是一个完全的类桌面的框架,却没有发展起来。Ext的缔造者Jack Slocum看到这个市场,在YUI基础上进一步的构建,加上绚丽的样式形成了YUI-EXT,吸引了web开发者的眼球,同时它也走上javascript类库的大舞台。
在Ext的发展初期,开源社区的高涨的热情的作用,Ext形成丰富的多国语言文档和使用实例,渐渐得到广大开发者的认可。从1.1稳定版本到2.0版本,Ext经历了脱胎换骨过程。把YUI-Ext更名为Ext,把依赖YUI的部分整理形成自己的类库,独立门户。而且在
1.2 为什么要使用Ext
在java开发中,选择适合项目的框架是件为难的事情,要从团队开发成员的技术使用和项目的需求等各方面的考量。选择太多,而javascript类库的选择也是面临同样的情形,prototype,jquery,mootools,YUI,dojo等等。
上面是对于开发者在选择框架方面,那么对于学习者,选择学习框架的使用也会面临这种选择。学会流行且好框架能使读者找到更好工作或在技术方面更进一步。
Ext值不值得学习呢,值不值得在项目中选用呢?学习它要花多大的成本呢?每一种框架都有其适用范围,Ext并不是设计成为通用的js框架,它仅仅是为了开发者在开发富客户的B/S应用中提供丰富的UI组件,便于快速开发,提供效率。由此可以看出它并不适合网站的开发,只适合于富客户端的B/S系统的开发应用。
下面我们就Ext的优点做一个简单的说明:
u 统一的主题(theme)
通过主题,样式能从UI组件中解耦分离出来。对于应用而言,可以根据不同的主题来统一改变风格。解耦的优点就是组件和主题能各自单独开发。使用UI组件时,可以不必关心主题。完成之后根据需求或喜好选择套用主题。Ext提供2套主题模板,开发者在一般情况下,不太需要CSS,photoshop等美工方面的知识就可以开发出绚丽的应用系统。
u UI与数据解耦
众多java框架都采用MVC模式作为其架构模式。Ext在架构时也借鉴了MVC思想,它把主题与UI组件解耦,把UI组件和数据解耦。在设计UI时候,可以不必考虑各种各样的数据形式,可以采用统一的数据访问接口的形式去访问操作数据。
u 丰富的UI组件
Ext的主要目的是构建UI组件,并提供给开发者使用。它提供众多功能强大、使用简单方便的UI组。同时在其论坛和例子中也提供了众多的扩展的组件。开发者能很方便利用这些组件来进行开发,同时这些UI组件还有着无与伦比的扩展性,开发者完全可以形成自己的UI组件库。
u 方便测试与调试
JS调试一直都是个问题。一些浏览器也有着插件来完成调试工作。但是它们在准确度,精度上都或多或少有些问题。Ext采用log的形式提供了开发时调试的使用,在使用Ext调试时就可以跟踪进入Ext类库的内面,分析其运行的状态以及发生错误的原因。
u 优秀的源码
Ext的源码设计精妙,结构清晰。匠心独用。其源码的文档丰富,是学习JavaScript的最好的教科书。其代码中的拦截思想和编译的实现,我们可以看作是天才之作。如能分析其源码,对于在javaScript的领域中水平能迅速提高。
光是其功能的优秀是不够的,有很多优秀的框架并没有什么人气,那么Ext呢?在选择类库的时候,还得考虑其人气,人气高一是公司招人容易,成本低,二是碰到问题时,在论坛或其它的地方,人家可以早就碰过交解决或很早地帮助解决。
在Extjs的官方网站就列出差不多100家的大公司在使用的Ext。其中著名的公司有:
Adobe、AIG、Microsoft、Borland、CNN、SAP、Sun、Sony、HP、IBM等。国内也有大量的公司在使用Ext。因为很多都是运行在内网中,不便于统计。但是金蝶公司就在它的软件中容入Ext的早期版本。 我们只要进入一个JS的论坛就可以了解Ext的使用情况。很多论坛都是讨论Ext的贴子占绝大多数。
如果从其功能,人气还不够的话,那么其丰富的文档绝对是可以打动人的。我们下载了Ext的源码包中,其不但是包括了Ext的使用文档。该使用文档对Ext的每个功能,每个属性,每个事件都进行了一清二楚地说明。更让我叫妙的它还提供了日常开发的经常使用的例子。很多时间只要通过对其例子进行改写,一个不懂JS的人都可以完成非常备强大的功能出来。
深入剖析EXT 2.2及应用连载 版权所有,谢绝转载 作者:彭仁夔 QQ:546711211