博客分类:

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

测试用例:

  1. <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js">
  2. </script>
  3. <script type="text/javascript">
  4. var $171 = jQuery.noConflict();
  5. </script>
  6. <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js">
  7. </script>
  8. <script type="text/javascript">
  9. var $142 = jQuery.noConflict();
  10. </script>
  11. <div class="wrapper">
  12. <div class="innerWrapper">
  13. <div class="button">
  14. <a href="" id="button" class="buttonRef">
  15. <span class="buttonText">Text</span>
  16. </a>
  17. </div>
  18. </div>
  19. </div>
  20. <script>
  21. var context71 = $171("div.wrapper");
  22. var context42 = $142("div.wrapper");
  23. </script>

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

  1. Get - Class 1.4.2   var item = $142(".buttonRef");
  2. Get Class1.7.1  var item = $171(".buttonRef");
  3. Context-Class 1.4.2 var item = $142(".buttonRef", context42);
  4. Context-Class 1.7.1 var item = $171(".buttonRef", context71);
  5. Find-Class 1.4.2    var item = context42.find(".buttonRef");
  6. 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 修复来来衡量哪个版本比较稳定。

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

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

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

3.功能上分析

  

  1. <strong>1.7.1新增的方法
  2. removeData([name|list]) (支持以数组为参数的批量操作)
  3. 属性:(新增)
  4. prop(name|pro|key,val|fn)
  5. removeProp(name)
  6. 选择器:(新增)
  7. focus1.6+
  8. 筛选:(重载了方法)
  9. is(expr|obj|ele|fn)1.6*
  10. closest(expr,[con]|obj|ele)1.6*
  11. nextUntil([exp|ele][,fil])1.6*
  12. parentsUntil([exp|ele][,fil])1.6*
  13. prevUntil([exp|ele][,fil])1.6*
  14. 事件:(新增)
  15. on(eve,[sel],[data],fn)1.7+
  16. off(eve,[sel],[fn])1.7+
  17. delegate(sel,[type],[data],fn)
  18. undelegate([sel,[type],fn])1.6*
  19. Deferred:
  20. 新增了整个模块
  21. 工具:(重载了方法)
  22. $.map(arr|obj,callback)1.6*
  23. </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两稳定版本比较~~

    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. 如何查看jar包的版本号?

    jar包根目录里的META-INF目录下的MANIFEST.MF文件里一般有会记录版本信息,可以到这个文件里查看   打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个 ...

  2. Delphi WebService 需要注意 转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gang4415.blog.51cto.com/225775/251997 Web ...

  3. 【转】使用unity3d需要注意到细节

    原 文:http://cache.baiducontent.com /c?m=9d78d513d9841df41ea6837e7c01a6660e20f6743da7c76508c3e34f84152 ...

  4. [IoLanguage]Io Tutorial[转]

    Io Tutorial   Math   Io> 1+1 ==> 2 Io> 2 sin ==> 0.909297 Io> 2 sqrt ==> 1.414214 ...

  5. Unity FisheyeShader using Spherical Mapping

    Shader "Hidden/FisheyeShader" { Properties { _MainTex ("Base (RGB)", 2D) = " ...

  6. JavaScript高级程序设计16.pdf

    第8章 BOM BOM的核心对象就是window,它表示浏览器的一个实例,在浏览器中window对象有双重角色,它既是JavaScript访问浏览器的一个接口,又是规定的Global对象,因此所有在全 ...

  7. JavaScript之this指针深入详解

    javascript中的this含义非常丰富,它可以是全局对象,当前对象或者是任意对象,这都取决于函数的调用方式.函数有以下几种调用方式:作为对象方法调用.作为函数调用.作为构造函数调用.apply或 ...

  8. 杭电 1795 The least one

    The least one Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. Epoll之ET、LT模式

    Epoll之ET.LT模式 在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式. 使用LT模式意味着只要fd处于可读或者可写状态 ...

  10. Docker的基本操作

    容器基本操作 1.启动容器 $docker run image [COMMAND] [ARG…] run在新容器中执行命令 2.启动交互式容器 $docker run -i -t IMAGE /bin ...