AJAXweb2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架?

让我们来想想选择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的速度很慢。

四、Extjs

主页:http://extjs.com/

设计思想

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

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

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

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

ExtJS与JQuery的比较

应该说粒度不同,应用场景也不同。后者要相对轻量级很多,而且得到了微软的器重。

前者对于界面展示的功能更为强劲、美观。(ExtJS 约等于 JQuery + UI)

extjs是基于组件级的,而jquery主要是简化Dom操作。

如果看着UI可以使用extjs,关于jquery可以在任何类型的项目使用。

extjs可以省下你大量做界面的时间,而且几乎不用怎么写代码,使用ext大部分时间都是学习怎么使用它的api,就算你不怎么熟练js,你都可以像用java一样来使用它.但是如果你想要修改ext的代码或者实现,你基本上无从下手.就像一般的程序员也根本改不动java的源代码一样.

jquery则不太相同,它很精巧,核心+插件式的开发应用.你不需要去动核心,你需要的功能,你可以通过插件来完成,如果你没有现成的插件,自己写一个插件,也是非常简单的事情.至少,比ext简单得多.

总结
轻量级选择
轻量级的选择:主要是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有比较大的需求时,是首选。

几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比的更多相关文章

  1. 几种流行的AJAX框架对比:Jquery,Mootools,Dojo,ExtJs,Dwr

    1:Jquery 主页:http://jquery.com/ 设计思想:简洁的方案思想,几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性). ...

  2. 几种流行Webservice控制框架

     转会[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1      摘要 开发webservice应用程序中 ...

  3. jQuery 简介,与js的对比

    jquery可以说是js的封装,大多数情况下jquery比js简单,它们两个可以相互写对方的里面,使用jquery需要导入jquery文件. <script src="jquery-1 ...

  4. uniGUI -- Web 应用框架 Delphi + Ext JS

    uniGUI --  Web 应用框架 ,基于 Delphi + Ext JS  技术.

  5. 不借助jquery封装好的ajax,你能用js手写ajax框架吗

    不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...

  6. 几种流行Webservice框架性能对照

     转自[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1      摘要 开发webservice应用程序中 ...

  7. 几种流行Webservice框架性能对比

    1      摘要 开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有30多种,这对于开发者如何选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性 ...

  8. ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。

    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架.

  9. 几种流行Webservice框架

    一. 几个比较流行的Webservice框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss  RESTE ...

随机推荐

  1. 获取屏幕宽度,将view移出屏幕再移动回来

    public class MainActivity extends AppCompatActivity { private TextView kuandu; float curTranslationX ...

  2. Xcode 8.X Command Line Tools

    Summary Step 1. Upgrade Your System to macOS Sierra Step 2. Open the Terminal Application Step 3. Is ...

  3. Spring Boot + Spring Cloud 构建微服务系统(十):配置中心(Spring Cloud Bus)

    技术背景 我们在上一篇讲到,Spring Boot程序只在启动的时候加载配置文件信息,这样在GIT仓库配置修改之后,虽然配置中心服务器能够读取最新的提交信息,但是配置中心客户端却不会重新读取,以至于不 ...

  4. Java中锁分类

    锁的分类大致如下:公平锁/非公平锁可重入锁/不可重入锁独享锁/共享锁乐观锁/悲观锁分段锁 1.公平锁/非公平锁公平锁就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的:而非公平锁是允许插队的 ...

  5. Java并发编程笔记之ConcurrentLinkedQueue源码探究

    JDK 中基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理剖析,ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程 ...

  6. 【PyTorch深度学习60分钟快速入门 】Part5:数据并行化

      在本节中,我们将学习如何利用DataParallel使用多个GPU. 在PyTorch中使用多个GPU非常容易,你可以使用下面代码将模型放在GPU上: model.gpu() 然后,你可以将所有张 ...

  7. ASP.NET MVC 5 Authentication Breakdown

    In my previous post, "ASP.NET MVC 5 Authentication Breakdown", I broke down all the parts ...

  8. 部署DTCMS到Jexus遇到的问题及解决思路--验证码

    上一篇博客我们已经基本完成了部署工作,目前发现了验证码出现500错误,分析其代码,我们可以看到验证码使用的是System.Drawing命名空间下的类库, GDI+ 位图,这个在肯定是平台相关的,所以 ...

  9. 【Java并发编程】16、ReentrantReadWriteLock源码分析

    一.前言 在分析了锁框架的其他类之后,下面进入锁框架中最后一个类ReentrantReadWriteLock的分析,它表示可重入读写锁,ReentrantReadWriteLock中包含了两种锁,读锁 ...

  10. Git实战手册(二): 标签应用和版本管理

    教程所示图片使用的是 github 仓库图片,墙内朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 背景介绍 当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本. ...