1.1 Ext JS是什么

Web 2.0风靡时,JS类库如雨后春笋般涌出,这些框架可以分成两类:Web前端开发辅助类库和Web富客户端开发类库。前端开发辅助类库主要是为了在传统的Web开发方式下提供更方便快捷的JS开发功能,而富客户端开发类库则是完全采用JS来构建客户端,它采用Ajax开发模式来进行前端页面的设计。

Ajax是DOM、CSS、JavaScript/XML等成熟技术的集合,它本身不是新技术,但该名词的出现,却引起众多程序开发者的关注并在业界掀起重重波澜。Ajax在Web开发中扮演了全新角色,改变了Web应用的开发模式。

在传统的Web开发模式下,浏览器客户端是无状态的,反复进行“请求—刷新—响应”的过程。每当用户单击按钮或链接时,浏览器就向服务器发送请求,服务器接收到该请求并进行处理,然后将处理完毕的信息发送至浏览器展示。在该段响应处理时间中,浏览器显示空白且处在无响应状态,用户唯一能做的就是等待。传统的Web开发中,用户的每次请求都会返回完整的显示页面,浏览器充当接收和显示的工具,它不能决定用户需要什么、应该请求什么内容。

而Ajax开发模式则相反,它给予了浏览器主动权,浏览器可以有选择地向服务器请求其所需的数据,然后根据响应的数据动态修改页面局部并显示,减少了网络传输的数据量,加快了浏览速度,提升了用户体验。

按理说Ajax模式是先进的开发方式,但在实际应用中却存在种种问题,如不利于搜索引擎的搜索。于是在应用中出现了两种形式:一种是传统Web开发和Ajax方式相结合,另一种是富客户端表现。

目前大多数网络都采用传统Web开发为主、Ajax开发为辅、两者相结合的开发模式。Ajax开发主要应用于如下几种情况:输入前提示、关联下拉选择及图片显示的LightBox效果等。这样既没有改变用户长期以来形成的习惯,同时又提供了较好的用户体验。一般来讲,该开发模式适用于网站开发,因为它主要是向用户提供浏览信息,且交互不多。

但是富客户端应用却需要给用户提供强大的交互功能,应用最典型的就是网络办公系统。它们以前都是桌面应用软件,从基于客户端的软件迁移到了基于浏览器的应用。该类应用要求如桌面应用软件一样,操作方便且用户界面(UI)富有表现力。在Ajax尚未出现前,程序员可以通过Flash等胖客户端来完成。之所以称为胖客户端,是因为它们需要浏览器安装相应的插件。而现在采用Ajax来表现富客户端,只需要浏览器即可。

为了能方便快速地开发桌面式的Web富客户端,出现了大量的Web UI类库,其中最有名的是Dojo和YUI。Dojo看似一个很有前途的框架,背后有大公司支持,但是其效率等各方面让人不敢恭维。而YUI成为了Web UI中的主力,但其设计的主要目的是形成分散的UI组件供前端开发者使用,要把这些组件组装成风格统一的类桌面软件相当困难。

Ext JS缔造者Jack Slocum在使用YUI进行开发时,看到这个巨大市场,在YUI基础上进一步进行扩展,提供了统一主题,形成绚丽的YUI-Ext类库,吸引了无数Web开发者的眼球。

YUI-Ext打着开源免费的旗号,无数的前端开发者涌入其社区进行扩展,形成丰富的多国语言文档和使用实例,渐渐得到广大开发者的认可。从YUI-Ext到Ext 1.1版本,经历了一段与YUI脱离的过程,Ext JS不再建立在YUI基础之上,它提供了自己的基础库,名字也进行了变化。

Ext 1.1版本在布局和组件的架构上存在巨大缺陷,Ext 2.0进行了脱胎换骨般的重构。在之后的2.0.2版本中,其开源GPL Licence也改成了LGPL Licence,尽管招来开源社区的猛烈攻击,但是其用户群反而越来越大。Ext 3.0版本对2.0版本进行了改进,增加了图表、Comet、RPC等功能,其余的改进主要体现在内存及性能上。