zoukankan      html  css  js  c++  java
  • 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比

    AJAX是web2.0的基石,现在网上流行几种开源的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://jqueryui.com/,基于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有比较大的需求时,是首选。

    来源:http://www.maycode.com/ joomla开源天空

  • 相关阅读:
    docker 部署aps.net MVC到windows容器
    docker 搭建私有仓库 harbor
    解决关于:Oracle数据库 插入数据中文乱码 显示问号???
    ionic cordova build android error: commamd failed with exit code eacces
    cordova build android Command failed with exit code EACCES
    Xcode 10 iOS12 "A valid provisioning profile for this executable was not found
    使用remix发布部署 发币 智能合约
    区块链: 编译发布智能合约
    mac 下常用命令备忘录
    JQuery fullCalendar 时间差 排序获取距当前最近的时间。
  • 原文地址:https://www.cnblogs.com/nicolaszhao/p/1723696.html
Copyright © 2011-2022 走看看