2019 年了,爲何我還在用 jQuery?

譯者按: 看來 jQuery 仍是有一些用武之地的。css

爲了保證可讀性,本文采用意譯而非直譯。翻譯僅供學習探討,不表明 Fundebug 觀點。html

許多人都在提倡: 「直接用原生的 JavaScript 就行了,不須要 jQuery 了」。前端

You might not need jQuery嘗試告訴咱們,擺脫 jQuery 是一件很容易的事情。可是,它的第一個例子偏偏告訴咱們用 jQuery 其實也不錯,由於咱們寫了 10 行原生的 JavaScript 代碼,其實只須要 1 行 jQuery 代碼就夠了。jquery

不少 JavaScript 的 API,尤爲是 DOM 相關的 API,挑戰了個人審美哲學,直白點說,我以爲它們太糟糕了!el.insertAdjacentElement('afterend', other)固然也能夠用,可是$(el).after(other)更加簡潔。$()函數也沒那麼好看,我沒有特別喜歡,可是它比原生的 API 好太多了。git

大家如何獲取某個元素的 sibling 呢?到底用nextSibling仍是用nextElementSibling?它們有什麼不一樣?各個瀏覽器分別支持哪一個方法?當你忙着去 MDN 查文檔的時候,我直接用 jQuery 的nextprev()就行了。github

許多經常使用的 JavaScript 的標準 API 都挺奇怪的,這裏我就不列出來了,你們去You might not need jQuery看看就知道了。web

寫代碼的時候,咱們總會須要使用一些經常使用的幫助函數,You might not need jQuery列舉了不少,使用 jQuery 能夠很方便的使用這些幫助函數,這樣咱們就不須要每次都去 Stack OverFlow 上去複製代碼了。。。ajax

瀏覽器的兼容問題已經沒有之前那麼頭疼了,可是它仍是個不小的問題,除非你以爲只要 85%的用戶 OK 就行。關於這個問題,你們能夠閱讀個人Why Hello CSS doesn’t use CSS variablesbootstrap

那麼,咱們必須使用 jQuery 嗎?固然不是!使用任何第三方庫都是有代價的,增長了複雜度,也增長了文件大小。可是,jQuery 其實沒那麼大,壓縮以後的大小隻有 30K。若是咱們去掉 ajax 以及一些不經常使用的功能的話,就只有 23K;若是咱們使用 querySelector 替代 SizzleJS 來構建的話,則只有 17K 了。不管是 30K 仍是 17K,對許多應用來講,這個大小都是徹底能夠接受的。小程序

你們不妨看看Bootstrap removing jQuery,爲了移除 jQuery,他們也是花了很多精力啊:本身擼幫助函數;放棄兼容 IE,由於太難寫了;他們花了 1 年半時間來倒騰這個。最終的結果在我看來,這些努力彷佛不值得。

我理解他們爲何這麼作,你們但願在 Vue 項目中使用 Bootstrap,可是同時使用 Vue 和 jQuery 的話有點傻。對於減小網頁大小,我很是贊成,也很喜歡Web bloatThe Ethics of Web Performance兩篇博客中的觀點。可是,咱們須要實際一點,不要過於理想主義。添加 17K 的 jQuery 真的那麼糟糕嗎?當我吐槽 Medium 或者 New York Times 這樣的網站須要的 JS 文件超過 1M 的時候,有的人會這樣反駁:」莫非你還在用 56k 的帶寬?「,可是,爲何 17K 的 jQuery 就那麼不能接受了呢?

不用 jQuery 而本身寫幫助函數也能夠,好比你但願你寫的函數被其餘人複用,或者你寫的函數特別小。可是爲了避免用 jQuery,放棄向後兼容?那我以爲仍是用 jQuery 得了。全部事情都用 jQuery 實現固然很差,可是任什麼時候候都不用 jQuery也不是什麼明智之舉。

我不是 jQuery 的狂熱粉絲,我也願意使用一些簡化版的 jQuery,只要它們可讓 JS 的 API 更好用一點。You might not need jQuery推薦了bonzo$dom,以及其餘一些 AJAX 庫,可是大多數看起來沒怎麼維護。若是沒有足夠吸引人的理由,最好不要去替代 jQuery,由於 jQuery 自己沒什麼大毛病。

有些讀者也許會去比較 Vue, React 以及其餘前端框架,可是這篇博客的目的是比較 jQuery 與原生的 JavaScript,沒有打算去論證整個前端到底應該如何開發。

話說回來,我以爲有些場景下只使用簡單的 JavaScript 也挺好的,主要緣由是我但願網頁能夠足夠快,可讓儘可能多的人正常訪問。以個人經驗,使用服務端渲染,再加上漸進式加強 JavaScript,是最佳的實現方式,開發起來很簡單,訪問速度足夠快,BUG 也不多。

難道前端框架很差嗎?固然不是,沒有什麼絕對很差的技術,全部技術都有必定的取捨,固然也包括 jQuery。

參考

關於Fundebug

Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java線上應用實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了10億+錯誤事件,付費客戶有Google、360、金山軟件、百姓網等衆多品牌企業。歡迎你們免費試用

版權聲明

轉載時請註明做者Fundebug以及本文地址: https://blog.fundebug.com/2019/06/04/why-i-am-still-using-jquery-in-2019/

相關文章
相關標籤/搜索