AJAX?strong>web20的基矻I现在|上行几种开?/strong>的AJAX框架Q比如:jQuery,Mootools,Dojo,Ext JS{等Q那么我们到底在什么情况下该用那个框Ӟ以下是一l摘抄的数据Q?/p>
Ajaxian?007q底对Ajax工具q行了调查,部分调查l果见下表(其中数字查者用该工具的百分比Q详l的请参见网)Q?a >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使用率最高,很大E度上是因ؓ它是最早成熟的框架Q很多以前在目中采用,所以现在一直在?/p>
让我们来看看选择AJAX框架的基Q?/strong>
你的目需求(即你需要哪些特性,例如是否要求做出_的界面、特效或其它功能Q?br />
是否支持A{的浏览器QIE, Firefox{)?
文档的质量:是否完善Q包含教E,APIQ代码示例等Q?br />
框架的可扩展性如何?为框架写插gҎ吗?
你是否喜Ƣ它的API的风|
能大多程度上l一你的JavaScript代码的风|
框架大小Q太大的框架D用户下蝲旉的g长)
框架是否你改变写HTML的方式(Dojo是q样Q?
代码执行速度Q性能如何Q?br />
代码是否为模块化QMootools为高度模块化Q?代码可重用性如何?
设计思想
z的思想Q几乎所有操作都是以选择DOM元素Q有强大的SelectorQ开始,然后是对其的操作QChaining{特性)?/p>
优点
,压羃后代码只?0多kQ无压羃代码94kQ?br />
Selector和DOM操作的方便:jQuery的Selector与mootools的Element.Selectors.js比较QCSS Selector, XPath SelectorQ?.2后已删除Q?br />
ChainingQLq回一个jQuery对象Q可以连l操作?br />
文档的完_易用性(每个API都有完整的例子,q是其它框架现在不能比的Q,而且|上q有很多其它的文档,书籍?br />
应用的广泛,包括google code也用了jQuery?/p>
使用jQuery的站点:http://docs.jquery.com/Sites_Using_jQuery
核心的开发团队和核心人员QJohn Resig{?br />
z和短的语法Q容易记?br />
可扩展性:有大量用户开发的插g可供使用Q?a >http://jquery.com/plugins/Q?br />
jQuery UIQ?a >http://jquery.com/plugins/Q基于jQueryQ但和核心的jQuery是独立的Q,不断发展中?br />
友好和活跃的CQgoogle groups:http://docs.jquery.com/Discussion
事g处理有很多方便的ҎQ如clickQ而不是单一的addEvent之类的?/p>
~点
׃设计思想是追求高效和z,没有面向对象的扩展。设计思\和Mootools不一栗?br />
CSS Selector的速度E微有些慢(但是现在速度已经大幅提高Q?/p>
设计思想
面向对象的设计思想?/p>
优点
模块化,各模块代码非常独立,最的核心只有8kQ最大的优点是可选择使用哪些模块Q用的时候只导入使用的模块即可,完整的也不到180kQ没有压~)Q压~后不到70k?br />
语法的简z,直观?br />
ҎQEffectsQ:q一ҎjQueryE强Q现在也正在开发Mootools UIQ这应该是Ajax框架开发的一个趋势)?br />
代码写的优美Q易阅读和修攏V?br />
文档的完_最新的1.2beta的文档比以前更详l)?br />
z跃的社区:官网(http://forum.mootools.net/)Q还有一个IRC?br />
性能Q见Q?a >http://mootools.net/slickspeed/
~点
修改了低层的一些类Q如Array, String{,q也是设计思想的不同?br />
在DOM和CSS Selector上不如jQuery强大?/p>
优点
背后强大的支持:IBM、Sun、BEA{,q是非常重要的优ѝ?br />
功能的强大,Full Stack的框Ӟ扩展了DHTML的能力,例如Q?br />
支持与浏览器Back/Forward按钮的集成?br />
Dojo OfflineQ一个跨q_的离U存储API?br />
ChartlgQ可以方便地在浏览器端生成图表?br />
ZSVG/VML的矢量图形库?br />
Google Maps、Yahoo! MapslgQ方便开发Mashup应用?br />
Comet支持Q通过通用的Buyeux协议?br />
强大的UIQDijitQ?br />
面向对象的设计,l一的命名空_?a onclick="javascript:tagshow(event, '%B9%DC%C0%ED');" href="javascript:;" target="_self">理机制QThe Package System and Custom BuildsQ?br />
可扩展性?/p>
~点
复杂Q?a onclick="javascript:tagshow(event, '%D1%A7%CF%B0');" href="javascript:;" target="_self">学习曲线陡?br />
文档的极端不全,q是一个很大的问题?br />
API很多不稳定,各版本间改动较大Q现在还不是一个成熟的框架?br />
侵入性太大,面中大量用dojo的属性,例如<button dojoType="dijit.form.Button" id="helloButton">Q如果将来dojo升或者换一个框架时Q负担会很大?br />
性能问题Q由于dojo加蝲采用了同步的机制Q会暂时锁定览器,DCPU使用率达?00%。另外,很多Widget的速度很慢?/p>
4:Ext JS
主页Q?a >http://extjs.com/
设计思想
lg化,推进RIAQRich Internet ApplicationQ的应用?/p>
优点
强大的UIQ而且性能不错Q这是其最大的优点?br />
速度快,是UIq是其它模块?br />
100%面向对象和组件化的思想Q一致的语法Q全局的命名空间?br />
文档的完_规范Q方ѝ?br />
核心的开发团队,Jack Slocum{?br />
z跃的社区,q速增加的用户量?br />
模块化实玎ͼ可扩展性强?br />
所有的lgQwidgetsQ都可直接用,而无需q行讄Q当Ӟ用户可以选择重新配置Q?/p>
~点
E复杂?br />
为重量的框Ӟ包含大量UIQ,体积大。如果导入ext-all.jsQ压~后也有q?00k?/p>
注意QEXT的商业用:如果只是把extjs包含在自q目中,而且q个目不是卖给用户做二ơ开发的工具,或组件库Q就可以遵守LGPL协议免费使用Q否则要付费?/p>
ȝ
轻量U选择
轻量U的选择Q主要是mootools和jqueryQ由于它们的设计思想的不同,jQuery是追求简z和高效QMootools除了q求q些目标以外Q其核心在于面向对象Q所以jQuery适合于快速开发,Mootools适合于稍大型和复杂的目Q其中需要面向对象的支持Q另外,在Ajax的支持上QjQueryE强一些;在Comet的支持上QjQuery有相关的插gQMootools目前没有Q但是Comet的核心在于服务器的支持,览器端的接口很单,开发相关的插g很简单?/p>
在面向对象的Javascript. Library中,mootools逐渐战胜了prototypeQ体U大Q面向对象的设计不合理等Q,也包括script.acul.ousQ基于prototypeQ实际上是prototype上的UI库)?/p>
面向RIA的框?/p>
考虑UJavaScripty库,目前主要是Dojo和ExtJSQ还有YUIQ。Dojo更适合企业应用和品开发的需要,因ؓȝ存储?DataGrid?D?D囑Ş、Chart、Comet{组件对于企业应用来说都是很重要的(当然q些lgq要{一D|间才能稳定下来)。例如,BEAZMashup技术开发的产品中已l用了Dojo?/p>
ExtJSQ美观和"易用"Qƈ且够强大。在对UI有比较大的需求时Q是首选?/p>