jquery历经了多个版本的更新,版本上的比较貌似没什么必要性,一般来说新的版本会比旧的版本各方面都略有提升,但由于新版中增加了各种新的功能,难免会引起bug的发生。评估一个版本是否适合当前开发场景使用,通过多几方面来衡量比较靠谱。以下我选用业界中比较稳定两个jquery来进行对比,它们分别是1.4.2版本以及1.7.1版本来 。

1.  性能上的分析

 1.1带宽比较

1.4.2体积为71K,1.7.1体积为92k,压缩后的体积相差无几,现金的网络情况可忽视21K的差距。

1.2各浏览器上的性能比较

本次性能测试并没有覆盖所有的浏览器,只选用当前比较流行的几个版本,包括了:IE6、IE8、FF11、Chrome 18

测试用例:

 <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js">
</script>
<script type="text/javascript">
var $171 = jQuery.noConflict();
</script>
<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js">
</script>
<script type="text/javascript">
var $142 = jQuery.noConflict();
</script> <div class="wrapper">
<div class="innerWrapper">
<div class="button">
<a href="" id="button" class="buttonRef">
<span class="buttonText">Text</span>
</a>
</div>
</div>
</div> <script>
var context71 = $171("div.wrapper");
var context42 = $142("div.wrapper");
</script>

在1秒里循环执行以下测试用例

 Get - Class 1.4.2   var item = $142(".buttonRef");
Get Class1.7.1 var item = $171(".buttonRef");
Context-Class 1.4.2 var item = $142(".buttonRef", context42);
Context-Class 1.7.1 var item = $171(".buttonRef", context71);
Find-Class 1.4.2 var item = context42.find(".buttonRef");
Find-Class 1.7.1 var item = conttext71.find(".buttonRef");

其运行结果就不一一显示出来,感兴趣的童鞋们可以到http://jsperf.com/jq1-4-2-vs-jq1-7-1/3具体查看各浏览器的性能比较。

简略汇总了各浏览器的数据:单位:(ops/sec)

总的来说, jquery1.7.1 除了在 IE6 上性能没太大的差别以外,在其它三个浏览器均有较大性能的提升。

2.稳定性分析

   

js 稳定性,起码保证浏览器在运行 jquery 的时候不会奔溃,同时我们从其发布策略以及其下个版本有没重大bug 修复来来衡量哪个版本比较稳定。

首先看看两个版本各自发布的时间,同时它们各自跟下个版本的发布时间间距。

Jquery 1.4.2  Posted February 19th, 2010 by John Resig
Jquery 1.4.3 Posted October 16th, 2010 by John Resig
Changelog :http://api.jquery.com/category/version/1.4.3/ Jquery 1.7.1 Posted November 3rd, 2011 by dmethvin
Jquery 1.7.2 Posted March 21st, 2012 by dmethvin
Changelog:http://blog.jquery.com/2012/03/21/jquery-1-7-2-released/

从发布时间间距和更改日志来说, 1.4.2 版本更稳定点。

3.功能上分析

<strong>1.7.1新增的方法
removeData([name|list]) (支持以数组为参数的批量操作) 属性:(新增)
prop(name|pro|key,val|fn)
removeProp(name) 选择器:(新增)
focus1.6+ 筛选:(重载了方法)
is(expr|obj|ele|fn)1.6*
closest(expr,[con]|obj|ele)1.6*
nextUntil([exp|ele][,fil])1.6*
parentsUntil([exp|ele][,fil])1.6*
prevUntil([exp|ele][,fil])1.6* 事件:(新增)
on(eve,[sel],[data],fn)1.7+
off(eve,[sel],[fn])1.7+
delegate(sel,[type],[data],fn)
undelegate([sel,[type],fn])1.6* Deferred:
新增了整个模块 工具:(重载了方法)
$.map(arr|obj,callback)1.6*
</strong>

总的来说, jq1.7.2 重载了不少方法,也新增了一些方法,但对于我们日常开发来说都不是太常用,当然功能更多我们有更多的选择,不过相对来说跟 jq1.4.2 没有太多的优越性。

4.可扩展性、兼容性分析

由于 Jquery 的版本都是不向后兼容的,导致了基于 jquery 开发的插件兼容性有问题,当新版本的 jquery 推出后,如果开发想升级的话,要看插件是否支持。通常情况下,在最新版 jquery 版本下,现有插件可能无法正常使用。开发者使用的插件越多,这种情况出现概率越高。

同时,由于 jquery1.4.2 版本发布时间比较早,基于这版本开发的插件数量庞大,而对应版本的开发社区相当活跃,很多诡异的问题,网上都有对应的解决方案。

从可扩展性来分析吧,无论是 1.7.1 还是 1.4.2 留给开发扩展的方法只有两个,分别是 jquery.extend 和jquery.fn.extend ,一种是添加静态属性和方法、一种是对象添加属性和方法,扩展方式比较简单,经历了多个版本,扩展方式都一致,因此在扩展性上面没什么可比较的。

5.结论

   

综上所述, jquery1.7.1 的版本在多数浏览器上的性能表现无疑比 jquery1.4.2 更好,而稳定性和兼容性方面jquery1.4.2 更出色点,其它地方基本没什么差距。

从我们目前前端开发情况来说吧,引用到第三方的扩展库相对来说比较少,而 1.4.2 拥有庞大插件数量的优势对于我们来说没什么意义(习惯自研的)。我们更多的关注框架性能是否优越,可扩展性是否良好,因此,jquery1.7.1 的版本是当前最好的选择。

jquery两稳定版本比较~~的更多相关文章

  1. 【转】jquery两稳定版本比较~~

    博客分类: Web前端 jquery  jquery历经了多个版本的更新,版本上的比较貌似没什么必要性,一般来说新的版本会比旧的版本各方面都略有提升,但由于新版中增加了各种新的功能,难免会引起bug的 ...

  2. jQuery选择什么版本 1.x? 2.x? 3.x?

    类似标题:jQuery选择什么版本?jquery一般用什么版本?jquery ie8兼容版本.jquery什么版本稳定? 目前jQuery有三个大版本:1.x:兼容ie678,使用最为广泛的,官方只做 ...

  3. Cloudera Manager安装之利用parcels方式安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(五)

    参考博客 Cloudera Manager安装之利用parcels方式安装单节点集群  Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式.rpm ...

  4. hadoop最新稳定版本使用建议

    Apache Hadoop Apache版本衍化比较快,我给大家介绍一下过程 ApacheHadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop ...

  5. Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  6. Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)

    前期博客 Cloudera Manager安装之Cloudera Manager 5.6.X安装(tar方式.rpm方式和yum方式) (Ubuntu14.04) (三) 如果大家,在启动的时候,比如 ...

  7. 解决jQuery多个版本,与其他js库冲突方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...

  8. jquery两个滚动条样式

    jquery两个滚动条样式 点击下载

  9. js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval

    需求: input控件在失去焦点后直接做验证,验证通不过的话,显示相应错误.但是如果失去焦点后点击的下个控件是比较特殊的控件(比如,退出系统),那么不执行验证操作,直接退出系统(防止在系统退出前,还显 ...

随机推荐

  1. 类型化dataset分页

    SELECT TOP (@每页行数) 所选列FROM 表名WHERE (主键 NOT IN( SELECT TOP ((@页数-1)*@每页行数) 主键FROM 表名where ( 条件)))AND ...

  2. django restframwork 教程之authentication权限

    当前我们的API在编辑或者删除的时候没有任何限制,我们不希望有些人有高级的行为,确保: 代码段始终与创建者相关联 只允许授权的用户可以创建代码段 只允许代码段创建者可以更新和删除 没有认证的请求应该有 ...

  3. Linux IPC BSD Pipe

    mkfifo() //创建有名管道(FIFO special file),创建完了就像普通文件一样open(),再读写,成功返回0,失败返回-1设errno.VS$man 3 mkfifo #incl ...

  4. c++ 类内static成员初始化

    类内部的static成员,除了为const static 且为整数类型(int char bool)可在类内部初始化. 其他的都建议在对应的cpp文件中进行初始化. test.h #ifndef TE ...

  5. 源码包安装Python3.6

    1,安装Python3.6的依赖包 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel r ...

  6. Python并行编程的几个要点

    一.基于线程的并行编程 如何使用Python的线程模块 如何定义一个线程 如何探测一个线程 如何在一个子类中使用线程 Lock和RLock实现线程同步 信号实现线程同步 条件(condition)实现 ...

  7. iOS - 开源框架、项目和学习资料汇总(UI篇)

    上下拉刷新控件 1. MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐)2. SV ...

  8. mysql rowid实现

    ) a, b b表是数据表

  9. windows下java开发资料汇总

    开发环境搭建:   (1) java开发环境配置    (2) maven环境快速搭建        项目部署:   (1) Eclipse中项目部署方法   (2) 使用Eclipse构建Maven ...

  10. python---使用md5加密

    python中使用md5进行加密字符串: __author__ = 'Administrator' #-*- coding: utf-8 -*- import hashlib aa = ' #需要加密 ...