• QQ咨詢:4001806960
  • 咨詢熱線:400-180-6960

jQuery 1.5發布 Ajax模塊重寫,壓縮文只有27K

作者:日期:2011-02-02 16:07:59 點擊:175

美國時間1月31日John Resig在jQuery官方博客發表文章,宣布jQuery 1.5正式版已經如期開發完成,可以下載使用。壓縮版本jQuery Minified 29KB,不壓縮版本jQuery Regular(用于閱讀和調試)207KB。由于jQuery已經成爲目前最流行的JavaScript庫,得到廣泛的支持,新版本的發布當然非常引人注目。

另外,微軟和Google也爲jQuery 1.5提供了CDN支持,可以直接導入:

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

Google:http://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同學是那裏的版主,隨時盯著呢。

上一篇: javaScript課程的在線視頻資源列表--北京珠峰培訓

下一篇: 閉包,事件綁定和arguments屬性綜合應用的小示例

X-POWER-BY FNC V1.0.0 FROM 自制42