jQuery 1.5正式版發(fā)布 五大變化引人注目
John Resig在jQuery官方博客發(fā)表文章,宣布jQuery 1.5正式版已經(jīng)如期開發(fā)完成,可以下載使用。壓縮版本jQuery Minified 29KB,不壓縮版本jQuery Regular(用于閱讀和調(diào)試)207KB。由于jQuery已經(jīng)成為目前最流行的JavaScript庫,得到廣泛的支持,新版本的發(fā)布當(dāng)然非常引人注目。
jQuery創(chuàng)始人John Resig在CSDN TUP活動上演講(相關(guān)報道)
另外,微軟和Google也為jQuery 1.5提供了CDN支持,可以直接導(dǎo)入:
微軟: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 (發(fā)稿時為止尚未上線)
新版本的主要改進(jìn)可以參見變更日志:http://api.jquery.com/category/version/1.5/。
John Resig總結(jié)了幾點(diǎn)比較引人注目的變化。
1. Ajax重寫
Ajax模塊完全進(jìn)行了重寫。新增一個jXHR對象,為不同瀏覽器內(nèi)置的XMLHttpRequest提供了一致的超集。對于XMLHttpRequest之外的傳輸機(jī)制,比如JSONP請求,jXHR對象也可以進(jìn)行處理。(詳情可以參見:jQuery.ajax文檔)
此外,系統(tǒng)的可擴(kuò)展性大大增強(qiáng),可以附加各種數(shù)據(jù)處理器、過濾器和傳輸機(jī)制,為開發(fā)新的Ajax插件提供了方便。(詳情參見:Ajax擴(kuò)展文檔)
2. 延遲對象
延遲對象(Deferred Object,jQuery.Deferred對象)是一個可鏈接的(chainable)實用工具對象,實現(xiàn)了Promise接口,可以在回調(diào)隊列中注冊多個回調(diào)、調(diào)用回調(diào)隊列并轉(zhuǎn)發(fā)任何同步/異步函數(shù)的成敗狀態(tài)。正如Using Deferreds in jQuery 1.5一文中說明的,其結(jié)果是在jQuery中能夠?qū)⒁蕾囉谀硞€任務(wù)(事件)結(jié)果的邏輯與任務(wù)本身解耦了。這一點(diǎn)在JavaScript中其實并不新鮮,Mochikit和Dojo等已經(jīng)實現(xiàn)有些日子了。由于jQuery 1.5的Ajax模塊內(nèi)置使用了延遲對象,因此現(xiàn)在通過jQuery編寫Ajax程序?qū)⒆詣荧@得這一功能。
開發(fā)人員借此可以使用無法立即獲得的返回值(如異步Ajax請求的返回結(jié)果),而且第一次能夠附加多個事件處理器。
例如,使用了新的jQuery內(nèi)部Ajax API就可以實現(xiàn)下面的代碼了:
此外,使用jQuery.Deferred還可以開發(fā)自己的延遲對象。更多詳情參見:延遲對象文檔。
3. jQuery.sub()
jQuery 1.5提供了一種創(chuàng)建和修改jQuery副本的方式。可以用來添加不向外部公開的方法,或者對jQuery的某些方法進(jìn)行重新定義以提供新功能,或者提供更好的封裝、避免名稱空間沖突。當(dāng)然,也可以用來開發(fā)插件,但Resig強(qiáng)烈建議在開發(fā)插件之前,先考慮jQuery UI widget工廠。
值得注意的是,sub函數(shù)并不提供真正的隔離,所有方法、數(shù)據(jù)、調(diào)用仍然依靠jQuery本身來支持。
4. 遍歷性能提高
在新版本中.children(), .pre(), .next()幾個常用的遍歷函數(shù)性能有了顯著提高。比如.children()的數(shù)據(jù)如下所示:
詳細(xì)的測試用例和數(shù)據(jù)可以參考這里。
5. 內(nèi)部開發(fā)系統(tǒng)
John Resig還特別提到了jQuery團(tuán)隊內(nèi)部開發(fā)系統(tǒng)的兩點(diǎn)改變:一是服務(wù)器端用Node.js替換了老的Java/Rhino系統(tǒng),使得團(tuán)隊可以專注于JavaScript環(huán)境的新變化;二是所用的代碼優(yōu)化程序從Google Closure切換到UglifyJS,新工具的壓縮效果非常令人滿意。
有意思的是,此前UglifyJS開發(fā)者曾經(jīng)公布過自己的測試結(jié)果,表明對jQuery的壓縮結(jié)果UglifyJS要比Closure略大(都在72KB左右),但運(yùn)行速度快得多,而且Closure不太安全??磥?,這段時間UglifyJS的進(jìn)展也很快啊。
原文鏈接:http://www.javaeye.com/topic/901281
【編輯推薦】