流行AJAX框架大比拼

  Prototype''s JavaScript 特性
Prototype  是最受欢迎的 AJAX 框架之一。 Ajaxian.com 网站 2006 年的调查结果显示, Prototype 框架规模庞大的 Yahoo! User Interface, Google Web Toolkit, and Atlas. 等相比较起来,其排名竟然遥遥领先,这不能不令人感到惊异。
答案很简单: Prototype 使用起来就像是对于 JavaScript 语言的自然扩展。尝试过 Prototype 框架后,笔者几乎坚信 Prototype 框架 应该被纳入 JavaScript 语言。
对于我们的案例,紧凑、强大并且设计合理的 Prototype 框架再合适不过了。通过 Ajax.Request 对象建立两个指向服务器端资源( PBX 和账户查询)的并发调用,完成了第一个挑战——资源整合。 Ajax.Request 对象是对于 XMLHTTPRequest 对象的跨浏览器抽象,可向服务器端发送普通请求或者异步请求。当调用请求结束时, Ajax.Request 对象把回调函数的名字作为参数返回。
Dojo  —— 神奇的 界面工具集 世界
Dojo 是一种颇受欢迎的开源框架,对于 web 界面工具集和 web 开发中与后端系统间交互等诸多重要方面提供广泛的支持。在各种工具中,有些可直接用来渲染呼叫用户列表( Dojo 使用手册中这部分的文档不完整 ),其它像多选列表项的异步调用等则需要作进一步定制工作。
Dojo 界面工具的定制需要深入了解 Dojo 的底层。 Dojo 的定制机制非常灵活,通晓 javascript 语言并且对于 Dojo 框架的细节了如指掌。定制的可能性是无限的。
对于多个后端异步调用的实现,采用了 dojo.io.bind 对象。 Bind 对象可实现对后端资源的调用并将结果返回给回调对象。下面的代码完成了针对 PBX 交换系统的调用。

AJAXweb20的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架?以下是一组摘抄的数据:

Ajaxian在2007年底对Ajax工具进行了调查,部分调查结果见下表(其中数字为调查者使用该工具的百分比,详细的请参见网页):http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results

Prototype jQuery Ext Script.aculo.us Mootools YUI JSON Dojo Backbase
34.1% 29.3% 22.5% 22.3% 14.3% 13% 12.9% 11.8% 8.3%

其中Prototype使用率最高,很大程度上是因为它是最早成熟的框架,很多以前在项目中采用,所以现在一直在用

让我们来看看选择AJAX框架的基础:

你的项目需求(即你需要哪些特性,例如是否要求做出精美的界面、特效或其它功能)
是否支持A等级的浏览器(IE, Firefox等)?
文档的质量:是否完善(包含教程,API,代码示例等)
框架的可扩展性如何?为框架写插件容易吗?
你是否喜欢它的API的风格?
能大多程度上统一你的JavaScript代码的风格?
框架大小(太大的框架导致用户下载时间的延长)
框架是否强迫你改变写HTML的方式(Dojo就是这样)?
代码执行速度:性能如何?
代码是否为模块化(Mootools为高度模块化)?代码可重用性如何?

一、jQuery
主页:http://jquery.com/

设计思想
简洁的思想:几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性)。

优点
小,压缩后代码只有20多k(无压缩代码94k)。
Selector和DOM操作的方便:jQuery的Selector与mootools的Element.Selectors.js比较,CSS Selector, XPath Selector(1.2后已删除)
Chaining:总是返回一个jQuery对象,可以连续操作。
文档的完整,易用性(每个API都有完整的例子,这是其它框架现在不能比的),而且网上还有很多其它的文档,书籍。
应用的广泛,包括google code也使用了jQuery。

使用jQuery的站点:http://docs.jquery.com/Sites_Using_jQuery
核心的开发团队和核心人员:John Resig等。
简洁和简短的语法,容易记。
可扩展性:有大量用户开发的插件可供使用(http://jquery.com/plugins/)
jQuery UI(http://jquery.com/plugins/,基于jQuery,但和核心的jQuery是独立的),不断发展中。
友好和活跃的社区:google groups: http://docs.jquery.com/Discussion
事件处理有很多方便的方法,如click,而不是单一的addEvent之类的。

缺点
由于设计思想是追求高效和简洁,没有面向对象的扩展。设计思路和Mootools不一样。
CSS Selector的速度稍微有些慢(但是现在速度已经大幅提高)

Mootools
主页:http://mootools.net/

设计思想
面向对象的设计思想。

优点
模块化,各模块代码非常独立,最小的核心只有8k,最大的优点是可选择使用哪些模块,用的时候只导入使用的模块即可,完整的也不到180k(没有压缩),压缩后不到70k。
语法的简洁,直观。
特效(Effects):这一点比jQuery稍强,现在也正在开发Mootools UI(这应该是Ajax框架开发的一个趋势)。
代码写的优美,易阅读和修改。
文档的完整(最新的1.2beta的文档比以前更详细)。
活跃的社区:官网(http://forum.mootools.net/),还有一个IRC。
性能:见:http://mootools.net/slickspeed/

缺点
修改了低层的一些类:如Array, String等,这也是设计思想的不同。
在DOM和CSS Selector上不如jQuery强大。


Dojo
主页:http://dojotoolkit.org/

优点
背后强大的支持:IBM、Sun、BEA等,这是非常重要的优势。
功能的强大,Full Stack的框架,扩展了DHTML的能力,例如:
支持与浏览器Back/Forward按钮的集成。
Dojo Offline,一个跨平台的离线存储API。
Chart组件,可以方便地在浏览器端生成图表。
基于SVG/VML的矢量图形库。
Google Maps、Yahoo! Maps组件,方便开发Mashup应用。
Comet支持,通过通用的Buyeux协议。
强大的UI(Dijit)。
面向对象的设计,统一的命名空间,包管理机制(The Package System and Custom Builds)
可扩展性。

缺点
复杂,学习曲线陡。
文档的极端不全,这是一个很大的问题。
API很多不稳定,各版本间改动较大,现在还不是一个成熟的框架。
侵入性太大,页面中大量使用dojo的属性,例如<button dojoType="dijit.form.Button" id="helloButton">,如果将来dojo升级或者换一个框架时,负担会很大。
性能问题,由于dojo加载采用了同步的机制,会暂时锁定浏览器,导致CPU使用率达到100%。另外,很多Widget的速度很慢。

Ext JS
主页:http://extjs.com/

设计思想
组件化,推进RIA(Rich Internet Application)的应用。

优点
强大的UI,而且性能不错,这是其最大的优点。
速度快,管是UI还是其它模块。
100%面向对象和组件化的思想,一致的语法,全局的命名空间。
文档的完整,规范,方便。
核心的开发团队,Jack Slocum等。
活跃的社区,迅速增加的用户量。
模块化实现,可扩展性强。
所有的组件(widgets)都可直接使用,而无需进行设置(当然,用户可以选择重新配置)。

缺点
稍复杂。
为重量级的框架(包含大量UI),体积大。如果导入ext-all.js,压缩后也有近500k。

注意:EXT的商业使用:如果只是把extjs包含在自己的项目中,而且这个项目不是卖给用户做二次开发的工具箱,或组件库,就可以遵守LGPL协议免费使用;否则要付费。


总结
轻量级选择
轻量级的选择:主要是mootools和jquery,由于它们的设计思想的不同,jQuery是追求简洁和高效,Mootools除了追求这些目标以外,其核心在于面向对象,所以jQuery适合于快速开发,Mootools适合于稍大型和复杂的项目,其中需要面向对象的支持;另外,在Ajax的支持上,jQuery稍强一些;在Comet的支持上,jQuery有相关的插件,Mootools目前没有,但是Comet的核心在于服务器的支持,浏览器端的接口很简单,开发相关的插件很简单。

在面向对象的Javascript Library中,mootools逐渐战胜了prototype(体积大,面向对象的设计不合理等),也包括script.acul.ous(基于prototype,实际上就是prototype上的UI库)。

面向RIA的框架

考虑纯JavaScripty库,目前主要是Dojo和ExtJS(还有YUI)。Dojo更适合企业应用和产品开发的需要,因为离线存储、 DataGrid、2D、3D图形、Chart、Comet等组件对于企业应用来说都是很重要的(当然这些组件还要等一段时间才能稳定下来)。例如,BEA基于Mashup技术开发的产品中已经使用了Dojo。

ExtJS:美观和"易用",并且足够强大。在对UI有比较大的需求时,是首选。

你可能感兴趣的:(jquery,框架,prototype,dojo,mootools,ajax框架)