JQuery 4.0震撼發(fā)布:這是復興還是告別?
jQuery,這個曾經(jīng)主宰前端開發(fā)的JavaScript框架,最近發(fā)布了4.0 beta版本,標志著它進入了一個新的階段。盡管新的框架和庫層出不窮,jQuery憑借其廣泛的功能積累和龐大的用戶基礎(chǔ),在前端領(lǐng)域依然保持著一席之地。
那么,曾經(jīng)的前端霸主jQuery,今天的地位如何呢?本文將分享jQuery 4.0更新的亮點,回顧其輝煌的發(fā)展歷程,并討論jQuery的未來前景。
jQuery 4.0更新亮點
經(jīng)過慎重準備,jQuery團隊終于發(fā)布了v4.0的beta版本!這個版本帶來了錯誤修復、性能提升和顯著變化,最值得注意的是放棄了對IE<11的支持,以更好地適應(yīng)現(xiàn)代web標準。jQuery團隊長期尋求的重大改進在jQuery 4.0.0 beta中得以實現(xiàn),包括清除多余代碼、淘汰已廢棄的API、移除未發(fā)布的內(nèi)部參數(shù),以及簡化過于復雜的“魔法”行為。
讓我們來看看4.0版本帶來了哪些更新。
向IE<11說再見
隨著技術(shù)的進步,jQuery 4.0決定停止支持IE10及更早版本的瀏覽器。我們計劃在未來的版本中(jQuery 5.0)進一步縮小瀏覽器支持范圍。這次更新移除了專為舊版本IE設(shè)計的代碼,使代碼庫更加高效。我們也停止了對其他過時瀏覽器的支持,如Edge Legacy、iOS和Firefox的舊版本,以及原生Android瀏覽器。如果您需要支持這些瀏覽器,可以使用jQuery 3.x。
移除已廢棄的API
多個版本中已廢棄的幾個函數(shù)終于在主版本中走到了盡頭。這些函數(shù)要么是為內(nèi)部使用而設(shè)計,要么對于所有支持的瀏覽器都有原生的替代方案。具體包括:
- jQuery.cssNumber
- jQuery.cssProps
- jQuery.isArray
- jQuery.parseJSON
- jQuery.nodeName
- jQuery.isFunction
- jQuery.isWindow
- jQuery.camelCase
- jQuery.type
- jQuery.now
- jQuery.isNumeric
- jQuery.trim
- jQuery.fx.interval
如果您的代碼使用了這些函數(shù),請務(wù)必更新它,以使用相應(yīng)的原生方法或替代函數(shù),確保與jQuery的最新版本兼容。
其他變化
- 移除特定方法:jQuery 4.0移除了一些設(shè)計用于內(nèi)部使用的數(shù)組方法,包括push、sort和splice。開發(fā)者應(yīng)更新他們的代碼,以使用標準數(shù)組方法代替。
- 事件順序變化:jQuery 4.0中focusin和focusout事件的處理順序發(fā)生了變化,以符合最新的W3C規(guī)范。這可能會影響依賴舊順序的插件或代碼。新的順序是:blur -> focusout -> focus -> focusin。
- jQuery.ajax添加FormData支持:jQuery.ajax現(xiàn)在可以自動處理二進制數(shù)據(jù),包括FormData,無需額外配置。
- 移除JSONP自動轉(zhuǎn)換:jQuery 4.0不再自動將dataType:“json”和提供的回調(diào)函數(shù)轉(zhuǎn)換為JSONP請求?,F(xiàn)在推薦使用CORS進行跨域交互,因為它在jQuery 4.0支持的所有瀏覽器中都有效。這有助于避免在不知情的情況下執(zhí)行來自遠程域的代碼。
jQuery源代碼遷移到ES模塊
jQuery主分支的源代碼已從AMD遷移到ES模塊。盡管jQuery的源代碼一直在npm和GitHub上與發(fā)布版本一起提供,但之前沒有使用RequireJS無法直接作為模塊導入?,F(xiàn)在,jQuery使用Rollup進行打包,所有測試分別在ES模塊上運行。
受信任類型和CSP支持
jQuery 4.0現(xiàn)在支持受信任類型,允許使用包裝在TrustedHTML中的HTML作為jQuery操作方法的輸入,同時遵守內(nèi)容安全策略的require-trusted-types-for指令。
此外,為了避免CSP錯誤,jQuery 4.0已將大多數(shù)異步腳本請求從使用XHR改為使用<script>標簽。XHR僅在特定情況下繼續(xù)使用(例如使用“headers”選項時)。對于需要支持IE11的情況,建議使用主構(gòu)建版本或添加原生Promises的polyfill。
更精簡的構(gòu)建版本
jQuery 4.0的精簡構(gòu)建版本經(jīng)過優(yōu)化,移除了Deferreds和Callbacks,進一步減小了它們的大小(壓縮到不到20k)。雖然Deferreds提供了一些原生Promises沒有的功能,但在大多數(shù)情況下,可以代替使用原生Promises。對于需要支持IE11的用戶,建議使用主構(gòu)建版本。
jQuery發(fā)展歷史
什么是jQuery?
jQuery是一個快速、簡潔的JavaScript框架。它最初發(fā)布是為了簡化JavaScript編程并提供跨瀏覽器兼容性。在web開發(fā)的早期,不同瀏覽器在JavaScript實現(xiàn)上有顯著差異,這使得編寫跨瀏覽器的JavaScript代碼非常困難。jQuery旨在通過提供一致的API,使JavaScript編程簡化,更容易開發(fā)跨瀏覽器代碼。
jQuery的出現(xiàn)
jQuery的歷史可以追溯到2005年,當時John Resig開始開發(fā)一個名為“Behaviour”的庫,旨在簡化JavaScript編程。然而,他發(fā)現(xiàn)這個庫太大且過于復雜,于是決定開發(fā)一個更輕巧、用戶友好的JavaScript庫,這就是jQuery的原型。
2006年1月,John Resig宣布發(fā)布了他的庫,命名為jQuery。初始版本已經(jīng)支持CSS選擇器、事件處理和AJAX交互,其獨特的鏈式語法和簡潔的多用途接口受到了廣泛贊譽。隨著版本的迭代,jQuery逐漸增加了對動畫效果、插件擴展的支持,使得開發(fā)者在web開發(fā)中使用JavaScript變得更加容易。
jQuery的影響
jQuery對web開發(fā)產(chǎn)生了重大影響,使得JavaScript編程對開發(fā)者來說更加可接近,并顯著提高了跨瀏覽器的兼容性。許多網(wǎng)站和web應(yīng)用仍然依賴于jQuery,因為它的易用性、廣泛的插件生態(tài)系統(tǒng)和對老舊瀏覽器的兼容性。
jQuery還有相關(guān)性嗎?
隨著React、Angular和Vue.js等現(xiàn)代JavaScript框架和庫的崛起,一些開發(fā)者質(zhì)疑jQuery在現(xiàn)代web開發(fā)中的相關(guān)性。然而,出于幾個原因,jQuery在web開發(fā)中仍然有一席之地:
- 遺留瀏覽器支持:許多網(wǎng)站和web應(yīng)用仍需要支持如IE11這樣的老舊瀏覽器,這些瀏覽器缺乏對現(xiàn)代JavaScript特性的支持。jQuery提供了一個橋梁,允許開發(fā)者編寫在廣泛的瀏覽器版本中都能工作的代碼。
- 易用性:jQuery的簡潔語法和廣泛的文檔使得開發(fā)者易于學習和使用。對于web開發(fā)新手或那些更喜歡簡單直接的JavaScript編程方法的開發(fā)者來說,jQuery仍然是一個吸引人的選擇。
- 插件生態(tài)系統(tǒng):jQuery的廣泛插件生態(tài)系統(tǒng)為開發(fā)者提供了大量預(yù)構(gòu)建的解決方案,用于常見的web開發(fā)任務(wù),如表單驗證、圖片滑塊和AJAX交互。這個生態(tài)系統(tǒng)通過允許開發(fā)者利用現(xiàn)有解決方案而不是重新發(fā)明輪子,節(jié)省了開發(fā)者的時間和精力。
- 與其他框架的集成:許多現(xiàn)代JavaScript框架和庫,如React和Vue.js,可以與jQuery共存,允許開發(fā)者在利用其他框架的優(yōu)勢進行應(yīng)用開發(fā)的同時,使用jQuery完成特定任務(wù)。這種靈活性使得jQuery即使在現(xiàn)代web開發(fā)環(huán)境中也是開發(fā)者工具箱中的寶貴工具。
盡管jQuery可能不再是前端開發(fā)領(lǐng)域的主導力量,但它在現(xiàn)代web開發(fā)中仍然有其位置,因為它對遺留瀏覽器的支持、易用性、廣泛的插件生態(tài)系統(tǒng)和與其他框架的集成。隨著jQuery 4.0 beta的發(fā)布,jQuery團隊展示了他們保持jQuery在不斷發(fā)展的web開發(fā)生態(tài)系統(tǒng)中相關(guān)性的承諾。那么,你認為jQuery還有存在的意義嗎?