AJAX是WEB2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等。
让我们来看看选择AJAX框架的基础:
◆你的项目需求(即你需要哪些特性,例如是否要求做出精美的界面、特效或其它功能)
◆是否支持A等级的浏览器(IE, Firefox等)?
◆文档的质量:是否完善(包含教程,API,代码示例等)
◆框架的可扩展性如何?为框架写插件容易吗?
◆你是否喜欢它的API的风格?
◆能大多程度上统一你的JavaScript代码的风格?
◆框架大小(太大的框架导致用户下载时间的延长)
◆框架是否强迫你改变写HTML的方式(Dojo就是这样)?
◆代码执行速度:性能如何?
◆代码是否为模块化(Mootools为高度模块化)?代码可重用性如何?
Tacos类包项目为Tapestry Web框架提供一些高性能的组件,同时也为在页面或自己组件中使用的AJAX框架(它当前支持的框架主要是dojo但也支持Prototype,script.aculo.us ,Rico)提供服务端Java支持。
HTMLi - 100% XSL AJAX框架,可与Java,ASP,PHP等集成使用。可自由扩展与定制。支持多种CSS样式。HTMLi提供了一些我们经常要用到的AJAX UI组件如:datepicker、Menu Bar、Progress Bar、Splitter、Status Bar、TabPane、Tree、windows等。
jMaki是SUN支持的一个AJAX框架。这个项目的是让Java开发人员在其基于Java的应用程序中(不管是JSP标签库还是JSF组件)都能使用AJAX技术。jMaki使用了Java与JavaScript中最优秀的部分以此来提供一些Rich AJAX style widgets。jMaki当前提供的bootstrap widget是来自Dojo,Scriptaculus,Yahoo UI Widgets,Spry,DHTML Goodies,和Google等组件库。jMaki提供为这些widget组件库提供了一个公共接口以便让你可以在同一页面中一起使用这些组件库。如果你有兴趣利用jMaki项目来快速开发Web应用程序,可以使用NetBeans 5.5的jMaki插件。这个插件可以直接把jMaki组件拖放到JSP页面中。
BZByte EZAjax是一个开源的Ajax Web框架。BZByte Ajax框架采用服务器端的Java来创建DOM而不是通过web浏览器的JavaScript。该框架的所有更新都是GUI驱动,所以无需担心暴露应用程序的代码和远程接口。GUI更新快速并且不依赖终端用户计算机的快慢。
AJAX框架
◆DWR - Web Remoting
◆Buffalo - Web Remoting (based on prototype)
◆prototype - JS OO library
◆openrico - JS UI component (based on prototype)
◆dojo - JS library and UI component
◆qooxdoo - JS UI component (C/S Style)
◆YUL - JS UI component
Web Remoting - DWR vs Buffalo
DWR和Buffalo都是Web Remoting框架,区别在于:
DWR使用自定义的简单文本协议,而Buffalo使用burlap协议。因此Buffalo解析大数据量可能会比较慢,然而可以适用于多种服务器端和客户端,并且burlap协议的完整性和支持的数据类型更加丰富
Buffalo基于prototype,如果你的AJAX应用也是基于prototype,那么可以减少重复加载prototype的带宽,并且获得相当一致的编程概念
DWR的服务器端实现要比Buffalo完善一些
DWR更加通用一些,用户比较广,而Buffalo是国内的Michael写的,用户使用比较少(名气较小)
建议使用buffalo,相对更加易用,然而服务器端功能有待完善
JavaScript Component Library - prototype vs qooxdoo vs dojo vs YUL
prototype是一个非常优雅的JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,之上还有rico/script.aculo.us实现一些JS组件功能和效果(不过目前还不是很完善),以prototype为核心,形成了一个外围的各种各样的JS扩展库,是相当有前途的JS底层框架,值得推荐,prototype以及rico/script.aculo.us的一个特出特点就是非常易学易用,门槛很低,常常是一两行JS代码就可以搞定一个相关的功能。同时它也是RoR集成的AJAX JS库。
qooxdoo是一个功能很强的JS组件库,完全模仿Windows操作系统的GUI组件。特点是不通过常规的HTML来构造页面,完全使用JS以类似VB/Delphi风格的编程方式构造Web GUI界面,比较适合内网面向C/S风格的web应用,,而不适合面向Internet的界面多变风格的应用。qooxdoo的一个重大卖点在于qooxdoo将要提供一个FormDesigner的IDE,通过在IDE里面的可视化拖拽设计方式来自动生成C/S风格的web页面js代码。qooxdoo缺点是JS文件体积过大,超过200KB,初次下载会比较慢,而且并不适合Internet消费类网站。
dojo是一个各个方面相当完善的JS库,包括了JS本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库,也被广泛应用在很多项目中,他的UI组件的特点是通过给html标签增加tag的方式进行扩展,而不是通过写JS来生成,dojo的API模仿Java类库的组织方式。dojo的优点就是库相当完善,发展时间也比较长,缺点是文件体积也比较大,200多KB,初次下载相当慢,此外,dojo的类库使用显得不是那么易用,至少给我的感觉是相当笨拙,特别是和prototype相比,更加显得难用。
YUL是Yahoo新近发布的AJAX组件库,也是一个包含了各个方面,从工具类库到通讯,到UI组件的综合性JS库。YUL的优势在于文档非常齐全,而且有Yahoo的支持,缺点是库目前还是不是很全,功能也不强大。