本文主要选取了目前比较流行的JavaScript框架Dojo、Google Closure、jQuery、Prototype、Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供大家参考,如有错误欢迎指出:)

主流框架对比


Dojo(重量级框架)


Dojo是一个强大的面向对象JavaScript框架。主要由三大模块组成:Core、Dijit、DojoX。Core提供Ajax,events,packaging,CSS-based querying,animations,JSON等相关操作API。Dijit是一个可更换皮肤,基于模板的WEB UI控件库。DojoX包括一些创新/新颖的代码和控件:DateGrid,charts,离线应用,跨浏览器矢量绘图等。

优点:
1. 功能强大,组件丰富(包括图表支持)

2. 面向对象的设计,有统一的命名空间和包管理机制,适用于企业级或是复杂的大型Web应用开发
缺点:
1. 复杂,学习曲线陡

2. html中也需要涉及dojo属性,将来换框架的成本高,例如:

<button dojoType="dijit.form.Button" id="helloButton">

3. 性能问题,dojo加载采用了同步机制,会暂时锁定浏览器

Google Closure(重量级框架)


Google Closure Tools是Google内部使用的JavaScript开发工具,主要包括Closure Compile、Closure Inspector、Closure Linter、Closure Stylesheets、Closure Library和Closure Templates,这些工具都可以独立使用。

Closure Compile

Closure Compile是一个独立的JavaScript编译器,主要用于对JavaScript进行压缩,但它与其他压缩器如JSMin、YUI Compressor不同的是,它不仅仅是去除注释和空白,还可以在保证代码正确性的情况下进一步地改写成更省空间的做法,例如:

a = new Object => a = {}
a = new Array => a = []
if (a) b() => a && b()
return 2 * 3; => return 6;

经过测试,非Closure Library编写的JavaScript代码经过Closure Compile编译后可用。


Closure Inspector

Closure Inspector是应用于火狐浏览器的插件,可以与Firebug协同工作,对压缩后的代码进行调试,提供了源码匹配、改进的栈跟踪、单元测试集成功能。


Closure Templates

Closure Templates工具提供了一个在JavaScript中做模板的机制及函数库,可以把HTML布局的部分写成一个模版,接着再利用Closure提供的工具把这个模板编译成JavaScript代码,这样可以省去很多处理页面的工作。Closure Templates既可以生成JavaScript,又可以实现Java,所以可以在服务器和客户端使用相同的模板。


Closure Linter

Closure Linter是针对Google推出的JavaScript编码规范
Google JavaScript Style对JavaScript编码风格进行校验的工具,能很大程度上提升代码的可读性。


Closure Stylesheets

Closure Stylesheets是一个Java程序,它向CSS中添加了变量、函数、条件语句以及混合类型,使得我们更易于处理大型的CSS文件。开发者可以用它来生成web应用程序或者网站所使用的真正的CSS文件。详见
Google Closure Stylesheets让我们更易于使用CSS


Closure Library

Closure Library是一个面向对象,模块化,跨浏览器的JavaScript库,同时提供了大量的UI组件以及一些底层的应用如DOM操作、服务器交互、动画、数据结构、单元测试、富文本编辑等。
优点:

1. 功能强大,组件丰富,文档齐全,适用于对性能要求高的Web应用

2. 面向对象,在模块化、程序结构组织、逻辑封装等方面有优势

3. 使用Closure Compile能大程度的进行压缩和优化

缺点

1. 与Dojo复杂程度相当,框架庞大,学习曲线陡

2. 代码中存在一些漏洞,详见
Google Closure: 糟糕的JavaScript

3. 相比jQuery,维护的人员要少

Closure Lite

Closure Lite是利用Closure Compile对Closure Library的核心进行编译后生成的一个单独js文件,只有33k,引用起来很方便。但是它并没有解决Closure Library中所提到的缺点。

参考资料


jQuery(轻量级框架)


Jquery是轻量级的JavaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

优点

1. 简洁易用,文档齐全

2. 有大量成熟的插件可供使用,扩展性强

3. 开发社区最大,维护的人员最多

缺点

1. 对面向对象没有很好的支持

2. 不能向后兼容,每一个新版本不能兼容早期的版本

3. 很多功能需要依赖于插件,然而插件太多,良莠不齐,不知道如何选择,且插件之间有可能会出现冲突


Prototype


Prototype是最早的JavaScript框架之一,目前已经很成熟了。它的强大之处主要在于它对DOM元素的扩展和处理跨浏览器事件,同时它对面向对象和简化AJAX的支持也很好。

优点

1. 对DOM和底层类的扩展使得在开发的时候增加了很多遍历

2. 有很多实用的函数

缺点

1. 由于扩展了底层类和DOM中的元素,可能存在一些潜在的冲突

2. 易用性不如jQuery


Mootools(轻量级框架)


Mootools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等。

优点

1. 功能强大,支持面向对象

2. 模块化,各模块代码非常独立,可以选择导入哪些模块

缺点

1. 对DOM和Selector的操作不如jQuery强大

2. 由于API设计上的不足,与Prototype类似,存在一些当下的和潜在的冲突,如修改了底层类以及其扩展DOM的方式

参考资料


YUI(重量级框架)


YUI由YAHOO官方团队开发,旨在构建一个富交互的Web应用程序函数库。它的全称是Yahoo UI,顾名思义,它提供了一套很强大的界面库,它能实现复杂的布局和很炫的界面效果。它由雅虎公司发布,与Google Closure类似,同时还提供了配套的压缩工具(YUI Compressor),文档生成工具(YUI Doc),单元测试工具(YUI Test)甚至开放了PHPLOADER(YUI PHP Loader )。

优点
1. 面向对象,功能强大

2. 提供了丰富的UI库

3. API标准化、规范的类结构、命名空间等,易于维护

缺点

1. 速度相对jQuery慢

2. 易用性不如jQuery


各框架具体参数对比


提供一个wiki上的参数对比:
Comparison of JavaScript frameworks


各框架对于移动平台的支持


以上框架中提供了移动平台的支持或插件的有Dojo、jQuery、Mootools和YUI。

Dojo提供了
Dojo Mobile,jQuery提供了
jQuery Mobile,Mootools提供了
Moobile,YUI提供了
Bottle


总结


以上各框架中,jQuery、Mootools属于轻量级框架,Prototype属于中型框架,而Dojo、Google Closure、YUI则属于重量级框架。重量级框架适合大型的web应用,前期开发成本高,但后期维护成本低。轻量级框架适合开发中小型应用。

重量级框架中,Dojo由于修改了html,后期如果更换框架成本会很高,不建议使用;Google Closure的Compile、Stylesheets、Linter虽然很强大,但是Library相比YUI还是稍逊一筹,因此建议使用YUI。

轻量级框架中,jQuery上手快,易用性强,但是不支持面向对象,且更多功能需要依赖插件来实现,适合快速开发;Mootools支持面向对象,而且模块化程度高,适合长期维护。

因此,可以结合项目的需求以及各JavaScript框架的特点来选择,不管使用何种框架,都可以附加使用一些工具,如使用Closure Linter来规范JS代码,使用Closure Compile来优化压缩JS代码,使用Closure Stylesheets来生成CSS文件,使用YUI Doc来生成API文档。


转载请注明出处,谢谢!

主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比的更多相关文章

  1. javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库

    预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...

  2. 20 个值得一试的JavaScript 框架

      投递人 itwriter 发布于 2011-09-26 17:46 评论(3) 有1956人阅读 原文链接 [收藏] « » 本文介绍 20 个值得一试的 JavaScript 框架,如果你认为答 ...

  3. 16 款最流行的 JavaScript 框架

    本文列举了16个当前最流行的JavaScript框架.在这个列表中,既包括jQuery和Mootools,也有Zepo移动JavaScript框架. 里面一定有你正在用的或想尝试用的JavaScrip ...

  4. 第一章 : javaScript框架分类及主要功能

      从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的j ...

  5. 16 款最流行的JavaScript 框架

    1. jQuery – Javascript框架 jQuery 是最流行的 JavaScript 框架,它简化了HTML 文档遍历.事件处理.动画和Ajax交互.jQuery插件非常之多. 2. Do ...

  6. 赶快收藏!16款最流行的 JavaScript 框架

    下面为大家介绍 16款最流行的 JavaScript 框架,赶快收藏! 1. jQuery – Javascript框架 jQuery 是最流行的 JavaScript 框架,它简化了HTML 文档遍 ...

  7. 前端必备,十大热门的 JavaScript 框架和库

    JavaScript 框架和库可以说是开源项目中最庞大也是最累的类目了,目前在github 上这一类的项目是最多的,并且几乎每隔一段时间就会出现一个新的项目席卷网络社区,虽然这样推动了创新的发展,但不 ...

  8. JavaScript 框架(库)

    JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时. 为了应对这些调整,许多的 JavaScript (helper) 库应运而生. 这些 JavaScript 库 ...

  9. 2014年最火的 21个JavaScript 框架

    下面,我们将会介绍 2014 年最火的 21 款JavaScript 框架,专为前端开发者准备的哦:)众所周知, JavaScript 框架是 JavaScript编程语言最棒的特性之一. JavaS ...

随机推荐

  1. Swift - 使用UI Dynamics给UIKit组件添加重力和碰撞行为

    UI Dynamics是UIKit的一个新组成部分,它向iOS中的视图提供了与物理学有关的功能和动画.可以让你向视图中引入力和物理属性,可以让你的视图弹跳,舞动,受重力影响等等. 下面通过样例,演示使 ...

  2. android随记

    [Android]中国大部分城市地区的结构定义与按拼音排序  http://blog.csdn.net/sodino/article/details/6739522

  3. WCF技术剖析之十一:异步操作在WCF中的应用(上篇)

    原文:WCF技术剖析之十一:异步操作在WCF中的应用(上篇) 按照操作执行所需的资源类型,我们可以将操作分为CPU绑定型(CPU Bound)操作和I/O绑定型(I/O Bound)操作.对于前者,操 ...

  4. 阿根廷探戈(Argentine Tango)舞步

    阿根廷探戈(Argentine Tango)舞步 阿根廷探戈(Argentine Tango)舞步 2011-11-22 13:05:11   不像其它大部分的社交舞,阿根廷探戈没有固定的舞步,它是一 ...

  5. 原码、反码、补码和移码事实上非常easy

    近期在备战软考,复习到计算机组成原理的时候,看到书中关于原码.反码.补码和移码的定义例如以下(n是机器字长): 原码: 反码: 补码: 移码: 看完这些定义以后,我的脑袋瞬间膨胀到原来的二倍!这样变态 ...

  6. jsonp与cors跨域的一些理解

    浏览器的同源策略,即是浏览器之间要隔离不同域的内容,禁止互相操作. 比如,当你打开了多个网站,如果允许多个网站之间互相操作,那么其中一个木马网站就可以通过这种互相操作进行一系列的非法行为,获取你在各个 ...

  7. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

  8. 深入浅出Hadoop Mahout数据挖掘实战(算法分析、项目实战、中文分词技术)

    Mahout简介 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目, 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建 ...

  9. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

    设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...

  10. Appium Server 传递iOS参数

    Appium  server  iOS Capabilities 参数 iOS Only Capability Description Values calendarFormat (Sim-only) ...