時隔一年多jQuery釋出3.6.1新版本,你還在用JQ嗎?

茶無味的一天發表於2022-11-23

在今年8月26日 jQuery 終於是更新了一個 3.6.1 維護版本,距離上一個版本釋出時間已過去一年零五個月之久,其維護者表示接下來主要考慮修復聚焦與失焦(focus & blur)的問題以及一些難以捉摸的邊緣情況,可能是歷史原因,jQuery 中與焦點有關的地方都很難改變,團隊從未完全正確地修復,所以他們暫時保留這些內容,並將在未來解決,特別是因為這些更改最終可能需要釋出一個新的主要版本。

所謂維護版本是指在不更改任何核心元件或新增新功能的情況下糾正安全漏洞或小錯誤的軟體版本。它們通常以十分之一或百分之一來編號,以區別於主要版本,一般來說,軟體工程師會盡可能快地完成這個過程,並且不會犧牲編碼質量或可靠性。

以下是 jQuery 3.6.1 的一些改進:

基礎設施改進

在這個版本中團隊做了很多工作來更新專案的一些測試和構建基礎設施,包括將 CITravis CI 遷移到 GitHub Actions,在 Node 16 而不是 Node 15 上進行測試,透過 https 載入他們的測試監聽器,以及新增更多自定義構建的準確測試。

不失去焦點

儘管困難,此版本中仍有一個與焦點相關的修復

https://github.com/jquery/jqu...

即使在移除了 jQuery 焦點處理程式之後,我們對焦點的特殊事件處理仍然保持連線,這破壞了任何後續的手動焦點觸發器。例如當:

$elem.on("focus", function() {}).off("focus").trigger("focus");

那麼 focus 不會觸發。

在 addClass(array) 中跳過錯誤

在不增加任何大小的情況下,新增了對跳過傳遞給 addClass or的陣列中的任何錯誤值的支援removeClass

這使得程式碼如下:

elem.addClass( [ "a", "", "b" ] ); // 新增`a`&`b`類。

與自定義 CSS 屬性值的規範保持一致

現在為自定義 CSS 屬性值 trimmed,以前類似的東西--prop: value ;會保留值中的前導和尾隨空格,返回“value”。

附加帶有 HTML 註釋的指令碼

團隊在正規表示式中發現了一個問題,即在附加指令碼時從指令碼中去除 HTML 註釋,最終在某些邊緣情況下刪除了部分可執行指令碼。幸運的是更多地依賴瀏覽器可以成為解決問題的方法,但團隊仍然需要在 3.x 分支中為 IE 去除 CDATA 部分。這將在 4.0 中刪除。

jQuery.trim 的效能提升

雖然jQuery.trim已在主分支上刪除以支援原生的String#trim(準備下一個主要版本上線),但對於分支支援的某些瀏覽器(例如 Android 4.0)在 3.x 分支上仍然需要它。由於其正規表示式的結構,某些極端情況非常慢。目前這種情況已經發生了變化,並且速度提升非常顯著。

https://github.com/jquery/jqu...

專案瘦身

有時你可能不需要 ajax,或者你更喜歡自主選擇請求庫,而將 jQuery 用於 CSS 和類操作組合、Web 動畫應用當中。所以除了包含 ajax 和效果模組的常規 jQuery 版本外,團隊還發布了一個不包括這些模組的“slim”版本。

如今,jQuery 的大小很少成為負載效能問題,精簡版本比常規版本小約 6k (gzip壓縮後) 。這些檔案也可以在 npm 包和 CDN 上找到:

https://code.jquery.com/jquery-3.6.1.slim.js
https://code.jquery.com/jquery-3.6.1.slim.min.js

繼續使用JQ

可以從 jQuery CDN 獲取檔案,或直接連結到它們:

https://code.jquery.com/jquery-3.6.1.js
https://code.jquery.com/jquery-3.6.1.min.js

還可以從 npm 獲取此版本:

npm install jquery@3.6.1

寫在最後

在單頁面應用大行其道,各種新鮮框架層出不窮的時代,或許已經很少有人會再關注 jQuery,甚至唯恐避之不及,但它曾經的功績仍不可磨滅,jQuery 致力於消除瀏覽器差異,簡化了操作 DOM 的方法,讓早期的開發者們能輕鬆實現動畫、修改 CSS 等各種操作,說它是 JavaScript 史上使用最廣泛的一個庫也不為過。

曾經輝煌的 JS 框架如今漸漸日薄西山,我們將會見證其終局,還是看著它一步步重新迴歸到大眾視野?

最後我想用去年 jQuery 3.6.0 釋出時底下寥寥數個評論中的一句話來作為結尾:

非常感謝您為維護和改進 jQuery 所做的所有辛勤工作,因為我們中的許多人仍然依賴 jQuery 來處理大多數生產中執行的專案。

相關文章