2021年了,jQuery的狀態(tài)如何?
我今天一直在使用jQuery——經(jīng)過(guò)這么多年和許多項(xiàng)目。這個(gè)庫(kù)出現(xiàn)在2006年,比React、Vue甚至Angular.js早了許多年。
jQuery 曾經(jīng)是 JavaScript 世界的關(guān)鍵。它使我們更容易開(kāi)發(fā)動(dòng)態(tài) Web 應(yīng)用程序。尤其是涉及到 DOM 操作和網(wǎng)絡(luò)請(qǐng)求時(shí),jQuery 更加直接。
但是現(xiàn)在,發(fā)生了什么變化,誰(shuí)還在使用它,它的受歡迎程度如何?以下是答案。
那么,jQuery 中有什么新東西?
我做了一個(gè)努力:我回到了2016年的jQuery官方博客頁(yè)面,看看有什么變化。
答案是:老實(shí)說(shuō),沒(méi)有發(fā)生太多事情。是的,jQuery 3 有很多變化——但沒(méi)有一個(gè)是真正值得注意的。過(guò)去幾年沒(méi)有像 React.js 中引入鉤子這樣的更新。
小的變化是支持 for-of 循環(huán),所以它現(xiàn)在可以被用于jQuery對(duì)象。在底層,jQuery現(xiàn)在也使用 requestAnimationFrame() 來(lái)執(zhí)行動(dòng)畫。
然而,沒(méi)有更顯著的變化。原因很簡(jiǎn)單:jQuery已經(jīng)把它應(yīng)該做的事情做到了足夠的程度。
公司還在使用它嗎?
當(dāng)談到選擇一項(xiàng)技術(shù)時(shí),市場(chǎng)上的大公司發(fā)揮著重要作用。當(dāng)有能力的開(kāi)發(fā)者團(tuán)隊(duì)選擇一項(xiàng)技術(shù)時(shí),它的分量很重。即使jQuery正在失去人氣,它仍然在網(wǎng)絡(luò)上發(fā)揮著巨大的作用。
據(jù) Wappalyzer 稱,在所有使用 JavaScript 庫(kù)的網(wǎng)站中,jQuery 仍占超過(guò) 34% 的巨大份額。
當(dāng)然,對(duì)此類數(shù)據(jù)應(yīng)該持保留態(tài)度:僅僅因?yàn)槿杂袛?shù)千或數(shù)百萬(wàn)個(gè)網(wǎng)站仍在使用這項(xiàng)技術(shù),并不意味著這是一個(gè)好的決定。 jQuery 也已成為其他庫(kù)必不可少的工具。
其中一個(gè)偉大的用途是Bootstrap,這個(gè)CSS框架使用jQuery進(jìn)行所有的DOM操作,只有在Bootstrap 5中,才取消了包含jQuery。
事實(shí)上,Stack Overflow 仍然使用 jQuery。其他使用 jQuery 的公司包括:
- Wellsfargo.com
- Microsoft.com
- Salesforce.com
是的,即使是微軟。盡管如此,我不會(huì)將公司的技術(shù)棧視為唯一的真理。甚至他們的網(wǎng)站也有犯錯(cuò)誤或沒(méi)有時(shí)間優(yōu)化的人。
jQuery已死
我不喜歡宣布技術(shù)“已死”。畢竟,科技行業(yè)不是醫(yī)院。不過(guò),你不得不承認(rèn) jQuery 已經(jīng)失去了極大的人氣,尤其是在過(guò)去的五年里:
但這是為什么呢?好吧,因?yàn)橄?React、Vue 和 Angular 這樣的框架和庫(kù)變得越來(lái)越流行,許多人認(rèn)為。但這肯定不是原因。流行的框架和jQuery有完全不同的方法。是的,兩者的重點(diǎn)都是讓構(gòu)建web應(yīng)用程序更容易。盡管如此,它們之間還是有很大的不同。
這些框架都是關(guān)于可重用組件、數(shù)據(jù)綁定、狀態(tài)和單頁(yè)應(yīng)用程序的。另一方面,jQuery應(yīng)該永遠(yuǎn)像純JavaScript的方言,正如你在下面的例子中可以很好地看到。
- let el = document.getElementById('contents');
- // the jQuery way:
- let el = $('#contents');
你不應(yīng)該對(duì)所有東西都使用React、Vue或Angular。對(duì)于沒(méi)有jQuery的站點(diǎn)來(lái)說(shuō),jQuery仍然是一個(gè)很大的幫助。
框架并沒(méi)有殺死jQuery。
現(xiàn)代 JavaScript 殺死了 jQuery。
尤其是方法 document.querySelector() 許多 jQuery 粉絲引用作為他們切換的原因。 (我也經(jīng)常使用 jQuery,因?yàn)?$() 語(yǔ)法實(shí)用)。
JavaScript 的發(fā)展使我們更容易訪問(wèn) DOM。即使是 jQuery 處理得非常好的網(wǎng)絡(luò)請(qǐng)求,在 JavaScript 中也變得更加簡(jiǎn)單。
我們可能會(huì)錯(cuò)誤地評(píng)估 jQuery 如何影響性能
當(dāng)然,庫(kù)對(duì)你的網(wǎng)站的性能來(lái)說(shuō)并不是那么好。特別是如果它們很大,加載時(shí)間就會(huì)增加。但是,jQuery只有30kb,并不是那么大。作為比較,看看Vue、React.js和Angular的壓縮和最小化的NPM包。
- vue: 22 kb
- react-dom + react: 41 kb
- angular: 62 kb
重要提示:這只是包的大小。應(yīng)用程序的生產(chǎn)包的大小要大得多!因此,在加載時(shí)間方面,jQuery 做得很好。
但是渲染性能呢?
大型框架喜歡爭(zhēng)奪誰(shuí)的性能最好。基準(zhǔn)測(cè)試通常是同時(shí)渲染巨大的表或數(shù)千個(gè)狀態(tài)更新。你已經(jīng)可以在這樣的實(shí)驗(yàn)中看到不同之處——當(dāng)然,原生JS 擊敗了他們。
但老實(shí)說(shuō),基準(zhǔn)通常沒(méi)有那么有意義。特別是對(duì)于只顯示內(nèi)容而不是“應(yīng)用程序”的網(wǎng)站,庫(kù)的渲染性能幾乎不重要。用戶不會(huì)注意到下拉列表使用了“慢速”庫(kù)。
最后的想法
我認(rèn)為仍然使用 jQuery 并沒(méi)有錯(cuò)。該庫(kù)在許多情況下仍然非常有用,特別是如果您已經(jīng)掌握了它。但是,值得一試現(xiàn)代 JavaScript。
如果你想優(yōu)化你的web應(yīng)用程序的性能到最后的細(xì)節(jié),jQuery沒(méi)有任何作用。你可以通過(guò)用普通JS編寫所有內(nèi)容來(lái)節(jié)省30kb的代碼。
jQuery過(guò)去和現(xiàn)在都更適合于那些以內(nèi)容為主的網(wǎng)站,而不是以功能為主。在更復(fù)雜的網(wǎng)絡(luò)應(yīng)用中,React和其他公司的組件理念是一個(gè)很好的切入點(diǎn)。