jquery各版本區別


 jquery版本區別:

         1.3一般功能夠

             1.4.2一般功能夠而且穩定

            1.7+比較新特性

            2不支持老IE

            兼容的話最好選 1.x。穩定性就用1.7或者1.4,其中1.4的體積相對小

            另外更加情況選用1系列還是2系列,2系列不支持ie6,7,8

 常用1.4和1.7:

     兩者可擴展性、兼容性分析: 

     由於 Jquery  的版本都是不向后兼容的,導致了基於 jquery  開發的插件兼容性有問題,當新版本的 jquery  推出后,如果開發想升級的話,
要看插件是否支持。通常情況下,在最新版 jquery  版本下,現有插件可能無法正常使用。開發者使用的插件越多,這種情況出現概率越高。

     同時,由於 jquery1.4.2  版本發布時間比較早,基於這版本開發的插件數量龐大,而對應版本的開發社區相當活躍,很多詭異的問題,
網上都有對應的解決方案。

    從可擴展性來分析吧,無論是 1.7.1  還是 1.4.2  留給開發擴展的方法只有兩個,分別是 jquery.extend  和 jquery.fn.extend  ,
一種是添加靜態屬性和方法、一種是對象添加屬性和方法,擴展方式比較簡單,經歷了多個版本,擴展方式都一致,因此在擴展性上面沒什么可比較的。

    綜合來說, jquery1.7.1  的版本在多數瀏覽器上的性能表現無疑比 jquery1.4.2  更好,而穩定性和兼容性方面 jquery1.4.2  更出色點,
其它地方基本沒什么差距。      

    從目前前端開發情況來說吧,引用到第三方的擴展庫相對來說比較少,我們更多的關注框架性能是否優越,可擴展性是否良好,因此, jquery1.7.1  的版本是當前最好的選擇。

 

既然jQuery 2.x不支持老舊瀏覽器,那么為什么要開發這個版本?

   要說明的是,這個版本主要是用於目前一些比較高級的JS環境,也即是版本比較新的瀏覽器。這些JS和老舊IE沒有多大關系,而jQuery 1.x中有大部分代碼是

   對老舊瀏覽器做的兼容,這個就增加了運行的負擔,影響了運行效率。

 

    jquery3.0 新特性:

 

1. 移除舊的IE工作區

 

新的最終版最主要的目標是更加快速,更加時尚,因此,那些支持早於IE9版本的相關技術與工作區都被移除了。這意味着如果你想要或者需要支持IE6-8,你必須用回1.12版本,因為甚至是2.X版本都無法完整支持早於IE9的瀏覽器。

 

2. jQuery 3.0運行在Strict Mode下

大多數支持jQuery 3的瀏覽器都支持strict mode,而在本次更新中對此進行了規定。

雖然jQuery 3是寫在strict mode中的,但是你需要了解的是你的代碼並不需要運行在strict mode中,因此如果你想要把以前的代碼遷移到jQuery 3,你不需要對已存在的jQuery代碼進行重寫。Strict和non-strict mode的JavaScript代碼可以和諧共存。

這里有一些例外:某些版本的ASP.NET,因為strict mode的緣故,無法與jQuery 3兼容,如果你的代碼涉及到了ASP.NET,你可以查看關於strict mode的細節

3. 引進for...of循環

jQuery 3支持for...of語句,這是由ECMAScript 6中新引進的一種for循環語句。這提供了對ArraysMapsSets這樣的可迭代對象一種更直接的遍歷方法。

在jQuery中,for...of循環可以取代以前的$.each(...)語法,並且更容易通過jQuery的元素集合進行循環。

jQuery 3.0

4. 動畫方面采用新的API

jQuery 3使用requestAnimationFrame() API來執行動畫,使動畫運行得更加順暢、快速。新的API只用於支持它的瀏覽器,對於那些更老的瀏覽器(如IE9)jQuery使用先前的API來作為顯示動畫的后備方案。

RequestAnimationFrame已經推出一段時間了,如果你對如何使用它以及什么時候使用它感興趣,CSS Tricks上有一篇很好的文章可供你閱讀。

jQuery 3.0

5. 對包含特殊含義的字符串提供轉義的新方法

新的jQuery.escapeSelector()提供了對在CSS中存在特殊含義的字符串或字符進行轉義的方法,該方法可使這些字符串或字符能夠繼續用於jQuery選擇器中,而無需對那些無法進行正確理解的JavaScript解釋器進行轉義。

這個示例可以讓你更好的了解這個全新的方法:

舉個例子,頁面中某個ID為“abc.def”的元素由於選擇器將其解析為ID為“abc”且包含一個名為“def”的類的對象,而無法被$( "#abc.def" )選定。但是它可以由 $( "#" + $.escapeSelector( "abc.def" ) )來進行選定。

我無法確定發生中情況的頻率,但是假如你碰到過這種類似的情況,這無疑給了你一個解決該問題的簡單方法。

6. 類操作方法支持SVG

不幸的是,jQuery 3現在還無法完整的支持SVG,但是對於操作CSS類名稱的jQuery方法,如.addClass().hasClass()現在可以將SVG文檔作為目標。這意味着你可以修改(添加、刪除、切換)或者查找SVG(可縮放矢量圖形)下的jQuery類,然后使用CSS的類樣式。(相關閱讀:Styling Scalable Vector Graphic (SVG) with CSS

 

7. 延遲對象現在與JS Promises兼容

JavaScript Promises,用於異步計算的對象,現在在ECMAScript 6中已經被標准化;它們的運行狀況和特性的詳細說明參見Promises/A+標准。

jQuery 3.0

在jQuery 3中,延遲對象已經與新的Promises/A+標准相兼容,延遲對象已經成為讓創建回調隊列成為可能的可鏈對象(chainable objects)。

新的特性改變了異步回調函數執行過程,Promises允許開發者編寫在邏輯上與同步代碼更接近的異步代碼。

查看升級指南的代碼示例,或者查看關於JavaScript Promises基礎的Scotch.io教程可以讓你了解更多的信息。

8. jQuery.when()對於多種參數的不同解讀

$.when()提供了執行回調函數的一種方法,它成為了jQuery 1.5之后的一部分。這個方法非常靈活,它適用於零參數,也適用於一個或者多個作為參數的對象。

jQuery 3改變了當包含$.then()方法時對$.when()中參數的解讀方法,你可以對$.when()進行額外的參數回調。

在jQuery 3中,如果你在$.when()中的then()方法內增加一個輸入參數,該參數將會被解釋成一個可與Promise兼容的"thenable"

這意味着 $.when方法能夠接收更加寬廣的輸入范圍,比如原生的ES6 PromisesBluebird Promises,這也使得編寫更復雜的異步回調成為了可能。

9. 新的顯示/隱藏邏輯

為了增加響應式設計的兼容性,與元素顯示和隱藏的代碼在jQuery 3中進行了更新。

從現在開始,.show().hide().toggle()方法將會以內聯樣式為重點取代以前的計算樣式,這種方式能夠更尊重樣式列表的改變。

新的代碼盡可能的尊重樣式列表中所呈現的數值,這意味着CSS規則可根據事件(如設備重新定位和窗口尺寸調整)進行動態改變。

這個說明文件申明了最重要的結果就是:

“作為結果,斷開連接的元素除非指定了內聯display: none,否則將不再認定為是隱藏的。因此,在jQuery 3.0中,.toggle()不再對斷開連接元素與已連接元素進行區分。”

如果你想要更好的了解關於全新的顯示/隱藏邏輯,這個Github discussion會對你有幫助。jQuery開發者還發布了Google文檔表來展示在不同用例下新規則的運轉。

10. 對於防止XSS攻擊的額外保護

jQuery 3增加一個額外的安全層用戶用於防備跨站點腳本(XSS)攻擊,它需要開發者指定$.ajax()$.get()方法中的選項為dataType: "script"。

換言之,如果你想要執行跨站點的腳本請求,你必須在這些方法中作出這樣的聲明。

jQuery 3.0

新的改變對於當“遠程站點傳遞非腳本內容之后又提供有惡意腳本的服務內容”的情況是非常有效的。這個變化不會影響$.getScript()方法,因為它明確地設置了dataType: "script"選項。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM