您的位置:首页 > Web前端 > JQuery

JQuery版本演化jQuery 1.0-2.0

2014-04-23 11:18 375 查看
在众多JavaScript框架(或JavaScript库)中,jQuery一枝独秀早已是不争的事实。jQuery是2006年1月14日诞生的, 它的 “父亲” 是一位年轻帅气的80后小伙子, 叫John Resig。Resig在刚写出jQuery的时候,Dojo和Prototype等JavaScript库已经比较有名了。当时, “Aajx”这个新词儿刚刚发明不到1年,由Jesse James Garrett那篇名垂青史的文章( “Ajax: A
New Approach toWeb Applications” ,http://t.cn/zOyTMn0)引发的全球学习JavaScript的热潮还在持续升温。在这个大背景下,JavaScript框架如雨后春笋般纷纷破土而出。为了快速开发时髦的Ajax应用,不少前端开发人员在日常工作中就选用Dojo、Prototype及Scriptaculous这样的JavaScript功能及效果库。这些库的主要特点是包装和扩展JavaScript核心及BOM和DOM已有的功能,为开发人员提供大量便捷的实用函数。从根本上说,这些库大都以功能为中心,而且处处迎合传统面向对象程序员的开发习惯。jQuery不然,它借鉴了很多脚本语言的动态特性,集多项创新于一身,开创了全新的编程风格。尽管并不是第一个JavaScript框架,但jQuery后来居上;刚一发布,就“引无数英雄竞折腰”
。很多其他框架的拥趸迅速迷上了jQuery, “弃暗投明” 。用后来成为jQuery核心团队成员的YehudaKatz① 的话说: “(看到jQuery的)第一眼我就喜欢上了这个框架。我想,这不就是我梦寐以求的编程方式吗! ”

Katz所说的“梦寐以求的编程方式” ,指的就是“以DOM元素为核心,一点一点地给它们添加新功能” (by centering on DOM Elements and tacking bits of functionality on top of them, jQuerymade JavaScript fun again,http://visualjquery.com/magazine/issue1.pdf) 。用今天jQuery开发人员的话说,jQuery的特色就是“面向集合和方法连缀” 。闭上眼睛想一想,jQuery利用CSS选择符创建jQuery对象,为这些对象提供丰富的方法,批量操作其中的DOM元素,而且让所有方法尽可能再返回这个对象以实现方法连缀调用,这些绝妙的创意组合在一起,无异于重新发明了JavaScript(就像CoffeeScript和Sass现在所做的一样)
。难怪Katz说完刚才那句话,紧接着又补充道: “jQuery让写JavaScript代码变得妙趣横生! ”



jQuery 1.0(2006年8月):

该库的第一个稳定版本,已经具有了对CSS选择符、事件处理和AJAX交互的稳健支持。

----------------------------------------

jQuery 1.1(2007年1月):

这一版大幅简化了API。许多较少使用的方法被合并,减少了需要掌握和解释的方法数量。

----------------------------------------

jQuery 1.1.3(2007年7月):

这次小版本变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。

-----------------------------

jQuery 1.2(2007年9月):

这一版去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够支持对效果的更灵活定制,而且借助新增的命名空间事件,也使插件开发变得更容易。

----------------------------------------

jQuery UI(2007年9月):

这个新的插件套件是作为曾经流行但已过时的Interface插件的替代项目而发布的。jQuery UI中包含大量预定义好的部件(widget),以及一组用于构建高级元素(例如可拖放的界面元素)的工具。

----------------------------------------

jQuery 1.2.6(2008年5月)

这一版主要是将Brandon Aaron开发的流行的Dimensions插件的功能移植到了核心库中。

----------------------------------

jQuery 1.3(2009年1月):

这一版使用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一版正式支持事件委托特性。

--------------------------------------

jQuery 1.3.2(2009年2月):

这次小版本升级进一步提升了库的性能,例如改进了:visible/:hidden选择符、.height()/.width()方法的底层处理机制。另外,也支持查询的元素按文档顺序返回。

----------------------------------------

⒈4重要新特性

·常用方法的性能大幅提升:重写了大部分较早期的函数;

·更容易使用的设置函数(setter function):为所有对象新增了许多易用的设置函数;

·对Ajax的改进:引入了许多Ajax和JSON处理方面的更新,包括HTML5元素的序列化;

·attribute(改进了.attr()的性能)、jQuery()核心函数、CSS(.css()性能有两倍提升)、特效和事件、DOM操作等也有显著改进

----------------------------------------------------------

1.5新版本

美国时间2012年1月31日John Resig在jQuery官方博客发表文章,宣布jQuery 1.5正式版已经如期开发完成,可以下载使用。压缩版本jQuery Minified29KB,不压缩版本jQuery Regular(用于阅读和调试)207KB。由于jQuery已经成为目前最流行的JavaScript库,得到广泛的支持,新版本的发布当然非常引人注目。

重要变化:

1. Ajax重写

Ajax模块完全进行了重写。新增一个jXHR对象,为不同浏览器内置的XMLHttpRequest提供了一致的超集。对于XMLHttpRequest之外的传输机制,比如JSONP请求,jXHR对象也可以进行处理。(详情可以参见:jQuery.ajax文档)

此外,系统的可扩展性大大增强,可以附加各种数据处理器、过滤器和传输机制,为开发新的Ajax插件提供了方便。

2. 延迟对象

延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。由于jQuery 1.5的Ajax模块内置使用了延迟对象,因此通过jQuery编写Ajax程序将自动获得这一功能。

开发人员借此可以使用无法立即获得的返回值(如异步Ajax请求的返回结果),而且第一次能够附加多个事件处理器。

例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了:

// Assign handlers immediately after making the request,// and remember the jxhr object for this request var jxhr = $.ajax({ url: "example.php" }) .success(function() { alert("success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete");
});// perform other work here ... // Set another completion function for the request above jxhr.complete(function(){ alert("second complete"); });

此外,使用jQuery.Deferred还可以开发自己的延迟对象。更多详情参见:延迟对象文档。

3. jQuery.sub()

jQuery 1.5提供了一种创建和修改jQuery副本的方式。可以用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新定义以提供新功能,或者提供更好的封装、避免名称空间冲突。当然,也可以用来开发插件,但Resig强烈建议在开发插件之前,先考虑jQuery UI widget工厂。

值得注意的是,sub函数并不提供真正的隔离,所有方法、数据、调用仍然依靠jQuery本身来支持。

4. 遍历性能提高

在新版本中.children(),.pre(),.next()几个常用的遍历函数性能有了显著提高。

5. 内部开发系统

John Resig还特别提到了jQuery团队内部开发系统的两点改变:一是服务器端用Node.js替换了老的Java/Rhino系统,使得团队可以专注于JavaScript环境的新变化;二是所用的代码优化程序从Google Closure切换到UglifyJS,新工具的压缩效果非常令人满意。

jQuery 1.5.2 在1.5的基础上修正的大量的bug

------------------------------------------------

jQuery 1.7b

2011年09月29日jQuery 1.7 的第一个 beta 测试版本,该版本修复了超过 50 个的问题以及带来一些新特性。

2011年11月4日jQuery1.7正式版发布。

新版本包含了很多新的特征,特别提升了事件委派时的性能尤其是在IE7下。

新增及改进项:

⒈新的事件 APIs: .on() and .off();

⒉提升了事件委派时的性能有了大幅度的提升,尤其是在IE7下;

⒊更好的在 IE 6/7/8 上支持 HTML5;

⒋切换动画更加直观;

⒌匿名模块定义 AWD

⒍jQuery.Deferred

⒎jQuery.isNumeric()

被删除的方法:

event.layerX and event.layerY

jQuery.isNaN()

-----------------------------------------------------

2012年03月24日jQuery 1.7.2正式版发布。

该版本在1.7.1的基础上修复了大量的bug,并改进了部分功能。而相比于1.7.2 RC1,只修复了一个bug。值得注意的是:如果你正在使用jQuery Mobile,请使用最新的jQuery 1.7.2和jQuery Mobile 1.1这两个版本,因为之前的jQuery Mobile版本还基于jQuery core 1.7.1或更早的版本。

-----------------------------------------------------

2012年11月14日 jQuery 1.8.3 发布,修复 bug 和性能衰退问题

IE8中的HTML相关Bug

jQuery 1.8.2在IE9中调用ajax失败的问题

jQuery 1.7.1不能正确地设置IE7中克隆元素的tabindex属性

压缩的JS文件包含非ASCII字符

如果body样式设置为display:none,则$('body').show()无法工作

在IE9中element.css('filter')返回不明确

在Android 2.3.4的浏览器中,jQuery 1.8.1转场效果崩溃

在iPad上缩放一个灯箱效果后,所有动画效果失效

从1.3.2升级到1.8.2版本后,出现Uncaught TypeError错误

在Chrome和Safari中,无法正确检测包含可编辑内容的DIV的焦点

----------------------------------------------------

2013年3月 jQuery 2.0 Beta 2 发布

据jQuery官方博客3月消息,jQuery 2.0 Beta 2 发布。

根据用户对jQuery 2.0 Beta 1 版本的反馈,Beta 2 版做了一些修改。jQuery官方表示,非常需要用户来测试 Beta 2 版,最好同时也能向他们反馈提交建议。

他们相信,Beta 2 版已非常稳定,值得一试,不需要等 2.0 的最终版本。

jQuery 团队在官博中再次提醒用户,jQuery 2.0 不再支持IE 6/7/8 了,但是 jQuery 1.9 会继续支持。因为旧版 IE 浏览器在整个互联网中还有很大部分市场,所以他们非常期望大部分网站能继续使用 jQuery 1.x 一段时间。jQuery 团队也将同时支持 jQuery 1.x 和 2.x 。1.9 和 2.0 版的 API 是相同的,所以不必因为你们网站还在用 jQuery 1.9,就感觉好像错过了什么,或者是落后了。

如果你想继续支持 IE 6/7/8,并且又想尝试 jQuery 2.0,那你可以额外加上一些代码。除了老版的 IE,其他所有浏览器都将使用第二脚本,忽略第一个。

在很多环境中,jQuery 2.0 应当都表现的很好。如下:

Google Chrome plugins

Mozilla XUL apps and Firefox extensions

Firefox OS apps

Chrome OS apps

Windows 8 Store (“Modern/Metro UI”) apps

BlackBerry 10 WebWorks apps

PhoneGap/Cordova apps

Apple UIWebView class

Microsoft WebBrowser control

Cheerio or jsdom with Node.js

Intranet applications

2013年4月18日 jQuery 2.0正式版发布

不再支持IE 6/7/8:如果在IE9/10版本中使用“兼容性视图”模式也将会受到影响。

更轻更快:2.0版本文件与1.9.1相比小了12%。

可以构建一个更小、更轻量的版本。

jQuery 2.0 API完全兼容jQuery 1.9 API。

jQuery 1.9.1汉化版2013年2月23日发布,由网友翻译非官方
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: