jQuery 3.0:10個炫酷新功能


 

摘要:JQuery 3.0終於來了。自從2014年10月開始,web開發人員社區就一直在等待這次重大更新。2016年6月,在千呼萬盼之中,它終於來到了我們面前。

 

 

JQuery 3.0終於來了。自從2014年10月開始,web開發人員社區就一直在等待這次重大更新。2016年6月,在千呼萬盼之中,它終於來到了我們面前。

 

jQuery 3.0的版本說明中表示,這是一個更輕巧、速度更快的jQuery,而且保持着向后兼容的特性。在這篇文章中,我們將會窺探一下jQuery 3.0的一些新特性,了解一下它給JavaScript世界帶來的變化。

 

何處下載

 

如果你想下載jQuery 3.0進行嘗試,請直接前往下載頁面。另外,它的升級指南和源代碼也值得你去看一下。 

 

如果你想要測試項目在 jQuery 3.0中的工作方式,你可以通過 jQuery遷移插件來識別代碼的兼容性。

 

這篇文章並沒有覆蓋jQuery 3.0的所有新功能,只介紹了那些有意思的內容:更好的代碼質量、新ECMAScript 6的整合功能、新的動畫API、用來轉義字符串的新方法,更強的SVG支持、經過改進的Async Callback、對響應式網頁更好的兼容以及更高的安全性。 

 

1、移除了舊的IE工作區

 

新版本最主要的目標之一,就是要變得更加快速和輕巧,因此此前版本中有關早於IE9瀏覽器的技術和工作區都被移除了。這意味着,如果你想要繼續為IE6-8版本的瀏覽器提供支持,你就必須繼續使用1.12版本,因為即使是2.X版本的jQuery也無法完整支持遭遇IE9版本的瀏覽器。你可以在jQuery 3.0的說明文檔中查看瀏覽器的支持情況。

 

 

2、jQuery 3.0可以在Strict Mode中運行

 

jQuery 3所支持的大部分瀏覽器都支持strict mode,本次發布的新版本對這個規則進行了具體的規定。雖然jQuery 3是在strict mode中編寫的,但是你需要知道,你所編寫的代碼不一定非要在strict mode中運行。因此,如果你想把以前的代碼轉移到jQuery 3中,你無需對代碼進行重寫。strict和non-strict模式的JavaScript可以彼此共存。 

 

只有一個例外:某些版本的ASP.NET,由於strict mode的原因,無法兼容jQuery 3。如果你的代碼涉及到了ASP.NET,你可以在這里查看詳情。 

 

3、引進For...of循環

 

jQuery 3現在支持For...of語句,這是ECMAScript 6新引進的一種for循環語句。它給Arrays、Maps和Sets等可迭代對象提供了一種更加簡單直接的遍歷方法。 

在jQuery中,For...of循環可以替代早前的$.each(…)語法,並且讓jQuery的元素集合循環變得更容易。

 

 

注意:for...of只能在支持ECMAScript 6的環境下或者使用Babel這樣的JavaScript編譯器下工作。 

 

4、采用了新的動畫API

 

jQuery 3使用了requestAnimationFranme() API來執行動畫,讓動畫的播放更加順暢、速度更快。新的動畫只能用在對其支持的瀏覽器中;一些老版本的瀏覽器(例如IE9),jQuery會使用以前的API作為動畫顯示的后備方法。 

 

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

 

 

5、包含特殊含義的字符串迎來了新的轉義方法

 

新的jQuery.escapeSelector()方法,可以讓你對在CSS中具有其他含義的字符串或是字符以一種全新的方式進行轉義,從而讓其在jQuery選擇器中繼續可用,而無需對那些無法進行正確理解的JavaScript解釋器進行轉義。 

 

下面這個例子可以幫助我們更好的理解這種方式:

 

假設頁面中有某個對象,其ID為abc.def,由於選擇器將其解析為“擁有abc ID,且包含一個名為def的類的對象”,從而無法被$( "#abc.def" )所選定。然而,它可以由 $( "#" + $.escapeSelector( "abc.def" ) )來進行選定。 

 

我不確定類似的情況會多長時間發生一次,但是如果你的確遇到了這樣的問題,你現在擁有了一個輕松的解決方式。 

 

6、類操作方法支持SVG

 

可惜的是,jQuery現在還無法完全支持SVG,但是jQuery但是對於操作CSS類名稱的jQuery方法,如addClass()和.hasClass()現在可以將SVG文檔作為目標。這意味着,你可以修改(添加、移除、切換),或是尋找SVG下的jQuery類,然后使用CSS的樣式。 

 

7、延遲對象現在可以兼容JS Promises

 

JavaScript Promises是用於異步計算的對象,它在ECMAScript 6中已經完成了標准化;它們的行為和特性詳細說明請參看 Promises/A+標准。 

 

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

 

這個心特性改變了異步回調函數的執行方式。Promises讓開發人員可以編寫在邏輯上與同步代碼更接近的異步代碼。 

 

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

 

$.when()方法為回調函數的執行提供了一種方法。從1.5版本中,它就一直是jQuery的一部分。它是一種靈活的方法;它還使用與零參數,也適用於一個或者多個作為參數的對象。 

 

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

 

 

在 jQuery 3中,如果你使用then()方法在$.when()中添加一個輸入參數,這個參數將會被解釋為一個可兼容Promise的“thenable”。

 

這意味着$.when可以接受更寬更的輸入范圍,例如原生ES6 Promises和Bluebierd Promises,這讓編寫更復雜的異步回調成為了可能。

 

9、新的顯示/隱藏邏輯

 

為了加強與響應式設計的兼容性, jQuery 3.中與顯示和隱藏元素有關的代碼也獲得了升級。從現在開始,.show()、.hide()和.toggle()方法將會專注於內聯樣式,以取代之前的計算樣式,這種方法更加尊重樣式列表的改變。 

 

這個新的代碼可以在任何可能的時候尊重樣式列表中所顯示的數值,這意味着,CSS規則可以根據事件,例如設備重定位和窗口尺寸的調整,來進行動態改變。 

 

10、為防止XSS攻擊提供額外的保護

 

jQuery 3針對XSS攻擊添加了額外的保護層,它需要開發人員指定$.ajax()和$.get()方法中的選項為dataType: “sricpt”。 

 

換句話說,如果你想要執行跨站點的腳本請求,你必須在這些方法中做出這種說明。

 



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

 


 

 

來源:SDK.cn

鏈接:https://www.sdk.cn/news/4101

原文:http://www.hongkiat.com/blog/jquery-3-new-features/

 


免責聲明!

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



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