作者:conardli來源:code秘密花園
jquery 于 2006 年推出,當時 ajax 一詞正炒的火熱。ajax(asynchronous javascript and xml)與早期 web 2.0 時代的其他 javascript 技術一樣,早已不再是開發者的常用語。

但 jquery 經受住了時間的考驗,事實上直到最近它還在保持逐年增長。對此, jquery 的開發者 michał gołębiowski-owczarek 分享了他的看法。
名字太長了,後面簡稱他 mgo 吧。
mgo 是上個月 openjs 部落格上兩篇文章的作者,裡面都提到了 jquery 正在進行的 現代化工作。
第一篇文章宣布了 jquery ui 的新版本 —— 一個建構在 jquery core 庫之上的使用者界面庫。這将是 該項目的最終版本,這意味着 jquery ui 後面不再會有大的疊代了,僅僅會保持維護狀态。
第二篇文章宣布棄用了 jquery mobile,這是 jquery 的另一個子項目,為移動浏覽器提供 基于 html5 的使用者界面系統。
不過,這兩個項目的結束都不會影響 jquery 現在的主項目:jquery core,這意味着它短時間内不會消失在大衆視野。
雖然 jquery 現在正在被大量使用,但現在的開發者甚至可能沒有意識到他們在使用 jquery。那是因為它被嵌入在了許多大型開源項目裡面 —— 其中最著名的就是 wordpress。
很多 wordpress 的主題和插件都依賴于 jquery。jquery 庫也是當今一些最流行的 javascript 架構和工具包的基礎層,例如 angularjs 和 bootstrap(4.0 及以下版本)。
其實大多數網站都不需要複雜的開發架構,它們大多是具有一些動态行為的靜态網站(這種網站通常都會用 wordpress 編寫),jquery 在這個場景下仍然很流行,因為它既簡單又有效。
而且,在未來的很長一段時間,jquery 還繼續會是 wordpress 的一部分,因為它很難在不破壞向後相容性的情況下将它删除。
随着時間的推移, wordpress 肯定會逐漸更新它的技術,但是這應該是一個漸進式的過程。
但是, wordpress 的社群裡已經出現了一些反對的聲音, 在 wordpress 主題中使用 jquery 的性能影響 就是一個比較熱門的話題。
gmo還表示:jquery死了嗎? 這樣的文章已經流傳了好幾年了,至少目前在 wordpress 生态系統中它仍然很活躍。如果誰鼓勵開發者們把它替換掉,風險自負。
當 jquery 的創造者 john resig 于2006 年 1 月在 barcampnyc 釋出它的以一個版本時,他寫道:
這段代碼徹底改變了讓 javascript 與 html 互動的方式。
他主要指的是 jquery 使開發者可以更輕松地操作 dom。要知道,這是在谷歌浏覽器逆襲之前,現在微軟臭名昭著的 internet explorer 占據了 85-90% 的浏覽器市場,其中 ie6 占主導地位。即使在當時,ie6 也以曆史上最糟糕的浏覽器而聞名。
resig 還在2006 年 6 月的一篇文章中指出了 javascript 開發者在浏覽器上遇到的一些問題:
javascript 中存在許多問題(其中大部分源于浏覽器不相容),任何稍微複雜一點的應用程式都需要處理諸如規範化事件處理、dom 節點選擇、動畫渲染這些問題。
這也正是 resig 着手解決的問題。當時“四大”領先的 javascript 庫是 dojo、mochikit、prototype/scriptaculous 和 yahoo ui 。
是以基本上,jquery 的發明主要是為了幫助開發者處理當時浏覽器的不足。
在現在各種好用的浏覽器都在更加符合 web 标準的時候,jquery 現在在 web 中扮演的角色是啥呢?
此外,javascript 标準本身在過去十年中也得到了顯着改進,尤其是在 2015 年 ecmascript 6 釋出之後。
現在, react 已成為當今最受關注的 javascript 庫。很多現代架構,尤其是 next.js,都是建立在 react 之上的。
一些其他流行的架構,例如 angular 都有自己的庫生态系統。現在的 javascript 架構還允許你将 ui 分解為各種元件,進而更輕松地擴充應用程式。
gmo 談到 next.js 和 angular 的時候提到:
這些架構提供了抽象,可以更輕松地在資料和視圖之間進行同步。是以他們的使用者不再需要如此頻繁地直接修改或者通路 dom,并且通常也不鼓勵這樣做。在這樣的環境下,使用 jquery 沒有多大意義。但這隻是整個網絡生态系統的一小部分。
然而 gmo 也承認 jquery 可能存在大規模應用程式的性能問題:
這些年來,我們大大提高了 jquery 的性能,但也存在一些難以應對的問題。其中之一是為了不與浏覽器沖突,jquery 不會修改原生原型 — 就像其他一些庫所做的那樣(通常後來導緻沖突 api 的标準化問題)— 而是用 jquery 包裝器對象包裝 dom 節點。每個操作都會建立一個新的這種包裝器對象,在大多數情況下,這并不重要,但對于具有大量 dom 操作的非常複雜的應用程式,這可能會成為一個問題。
很明顯,jquery 不再是開發者将 javascript 功能添加到他們的網站或應用程式的最佳方式,尤其是在需要擴充的情況下。
github 對 jquery 的貢獻遠低于其高峰年(2006 年至 2013 年左右)的事實,這也意味着要使 jquery 與我們現在的 web 更加相容,我們還需要做更多的事情。
不過沒關系。jquery 的持續時間比大多數開發者預期的要長得多,因為它是在 web 2.0 時代開始時問世的。畢竟,它現在仍然可以完成它所要做的工作,而且它仍然是一個非常簡單友善的 javascript 庫。
無論如何,在未來幾年内,jquery 還會嵌入到數以千萬計的 wordpress 網站中,它甚至可能比 react 更持久。
對此你怎麼看呢?