【老兵不朽】時隔1年,jQuery 發佈新版 3.4.0

前言

jQuery 團隊的核心開發者 Timmy Willison 在官網宣佈了 jQuery 3.4.0,這距離上個版本 3.3.x 系列的推出已整整過去了一年多。

官方表示這可能是 3.x 分支的最後一個小版本更新,接下來的工作重心將是 jQuery 4.0 大版本的更新。

新版本特性

1、針對 .width 和 .height 的性能改進

在獲取和設置維度時,在某些情況下,這可能會導致佈局顛簸,這基本上意味着瀏覽器計算佈局的次數超過了必要的次數。我們在IE以外的所有瀏覽器中修復了這個問題,這是無法避免的。

2、支持 nonce 和 noodle

爲了支持通過.html和.append等方法添加腳本元素,jQuery將它們分開並附加新的腳本標記來加載和執行遠程內容。在這個過程中,諸如nonce和nomodule被忽略的屬性,但jQuery 3.4.0現在掛在它們上面。

3、針對 Radio 元素新增事件處理程序中的預期狀態

在以下示例中,true第一次單擊該元素時記錄了該日誌。我們修復它,以便checked在執行事件處理程序之前更新屬性。
代碼示例:

var $radios = jQuery(".example");
var $firstRadio = $radios.first();
var firstCheckedState = $firstRadio.prop("checked");
$radio.on("click", function() {
  // true in <3.4.0
  console.log($firstRadio.prop("checked") === firstCheckedState);
});
$radios.eq(1).click();
4、針對 Object.prototype pollution 問題的小修復

Query 3.4.0在使用時包含一些非預期行爲的修復jQuery.extend(true, {}, ...)。如果未過濾的源對象包含可枚舉__proto__屬性,則它可以擴展本機Object.prototype。這個修復包含在jQuery 3.4.0中,但補丁差異存在以修補以前的jQuery版本。
代碼示例:

jQuery.extend(true, {},
  JSON.parse('{"__proto__": {"test": true}}')
);
console.log( "test" in {} ); // true
5、棄用positional selectors and the sunset of Sizzle

jQuery的基本API是選擇一些內容,然後對所選內容執行某些操作。Sizzle,jQuery中的選擇器引擎,處理上半部分。它是一個快速有效的小引擎,爲原生選擇器API querySelectorAll和其他原生JavaScript和CSS選擇器鋪平了道路。現在很多這些選擇器已經進入現代瀏覽器,現在幾乎是時候告別Sizzle了。但是爲了在jQuery 4.0中刪除Sizzle,我們還需要刪除我們稱爲位置選擇器的東西,它們是非標準選擇器。

具體而言,jQuery的3.4.0被棄用**:first,:last,:eq,:even,:odd,:lt,:gt,和:nth**。當我們刪除Sizzle時,我們將用一個小包裝器替換它,querySelectorAll如果沒有更大的選擇器引擎,幾乎不可能重新實現這些選擇器。

我們認爲這種權衡是值得的。請記住我們仍然會支持的位置方法,如.first,.last和.eq。你可以用位置選擇器做任何事情,你可以用位置方法來做。無論如何,它們表現更好。

升級

如果從jQuery 3.0+升級,應該沒有兼容性問題。

更新日誌

1、Ajax
2、Core
  • 使用isAttached檢查元素的附件(662083ed
  • 微小的效率修復可jQuery.extend / 1.3中(#4246)(#42454ffb1df8
  • 保留在DOM操作與src屬性的腳本CSP的隨機數(#432300504037
  • 在DOM操作中保留腳本上的CSP nonce(#3541c7c2855e
  • 支持通過隨機數通過jQuery.globalEval(#42785bdc85b8
  • 識別陰影DOM在附件檢查(#35049b77def5
  • 防止$ .extend(true,…)的Object.prototype污染(753d591a
3、CSS
4、外形尺寸
  • 修復SVG上的計算外部寬度(#3964e743cbd2
  • 避免設置寬度/高度時,取boxSizing -這避免了迫使在某些情況下回流(#399173d7e625
  • 回落到offsetWidth /身高的邊界框在IE(#4102315199c1
5、事件

精彩評論

精彩評論

精彩評論

貢獻者

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章