jQuery 1.5正式版發布 五大變化引人注目
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就可以實現下面的代碼了:
此外,使用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的進展也很快啊。
原文鏈接:http://www.javaeye.com/topic/901281
【編輯推薦】