首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

jQuery 1.5公布 Ajax模块重写

2012-11-22 
jQuery 1.5发布 Ajax模块重写美国时间1月31日John Resig在jQuery官方博客发表文章,宣布jQuery 1.5正式版已

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

jQuery创始人John Resig在CSDN TUP活动上演讲(相关报道)

另外,微软和Google也为jQuery 1.5提供了CDN支持,可以直接导入:

微软:http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js

Google:https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js (发稿时为止尚未上线)

新版本的主要改进可以参见变更日志:http://api.jquery.com/category/version/1.5/。

John Resig总结了几点比较引人注目的变化。

1. Ajax重写

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

此外,系统的可扩展性大大增强,可以附加各种数据处理器、过滤器和传输机制,为开发新的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()几个常用的遍历函数性能有了显著提高。比如.children()的数据如下所示:

详细的测试用例和数据可以参考这里。

5. 内部开发系统

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

有意思的是,此前UglifyJS开发者曾经公布过自己的测试结果,表明对jQuery的压缩结果UglifyJS要比Closure略大(都在72KB左右),但运行速度快得多,而且Closure不太安全。看来,这段时间UglifyJS的进展也很快啊。

对了,如果你在使用中发现问题,可以直接到这里报告bug:http://bugs.jquery.com/。另外,也可以到Reddit上参与讨论,别忘了,John Resig同学是那里的版主,随时盯着呢。

【延伸阅读】

jQuery 1.5的改进细节

学习jQuery必须知道常用的几种方法

Web开发者必知的12款jQuery插件

免费电子书:jQuery Fundamentals(英文) 1 楼 feikongting 2011-02-09   我也随时关注着JQUERY的信息,压缩后才29K,不错不错 2 楼 Army 2011-02-09   我有点担心会越来越庞大。 3 楼 ma_ru_long 2011-02-09   怎么学习这个呢,买本书? 4 楼 superhanliu 2011-02-09   一直在追随,从来没用过。 5 楼 jorneyR 2011-02-09   Army 写道我有点担心会越来越庞大。
已经越来越大了,mini版本都有80多K 6 楼 demonkind 2011-02-10   ma_ru_long 写道怎么学习这个呢,买本书?
看看API就行了。 7 楼 liukai 2011-02-10   还要等一段时间才能用..
毕竟jqueryui之类的依然还是用的1.4.4版本.
再考虑到1.4.4和1.5的兼容性.除非未来能做新的项目.
不然还是老老实实的用1.4.4吧 8 楼 hyl1234 2011-02-10   老项目遗留,目前还在用1.3。 9 楼 lihuan5120 2011-02-10   superhanliu 写道一直在追随,从来没用过。
一直在听说,从来没见过。 10 楼 aoliwen521 2011-02-10   越整越复杂。。 11 楼 maybe... 2011-02-10   压缩不是还有80多K吗 12 楼 181054867 2011-02-10   很好,JQuery很强大 13 楼 siashuayongsheng 2011-02-11   superhanliu 写道一直在追随,从来没用过。
me too 14 楼 hymanyung 2011-02-11   不錯,一直在用,期待更好... 15 楼 interjc 2011-02-11   jquery在转型 16 楼 witcheryne 2011-02-12   jQuery一直没找到一个用起来很顺手的Grid插件```
老项目用的还是1.4.2, 表格是自己拼的html 17 楼 waiting 2011-02-13   witcheryne 写道jQuery一直没找到一个用起来很顺手的Grid插件```
老项目用的还是1.4.2, 表格是自己拼的html

试试 jqGrid
http://www.trirand.com/blog/
18 楼 lifei6671 2011-02-16   重写后,Ajax的效率能不能提高呢?能不能兼容之前的函数呢?

热点排行