譯者按: 看來 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 的next
和prev()
就行了。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 variables。bootstrap
那麼,咱們必須使用 jQuery 嗎?固然不是!使用任何第三方庫都是有代價的,增長了複雜度,也增長了文件大小。可是,jQuery 其實沒那麼大,壓縮以後的大小隻有 30K。若是咱們去掉 ajax 以及一些不經常使用的功能的話,就只有 23K;若是咱們使用 querySelector 替代 SizzleJS 來構建的話,則只有 17K 了。不管是 30K 仍是 17K,對許多應用來講,這個大小都是徹底能夠接受的。小程序
你們不妨看看Bootstrap removing jQuery,爲了移除 jQuery,他們也是花了很多精力啊:本身擼幫助函數;放棄兼容 IE,由於太難寫了;他們花了 1 年半時間來倒騰這個。最終的結果在我看來,這些努力彷佛不值得。
我理解他們爲何這麼作,你們但願在 Vue 項目中使用 Bootstrap,可是同時使用 Vue 和 jQuery 的話有點傻。對於減小網頁大小,我很是贊成,也很喜歡Web bloat與The 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專一於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/