為什麼我在2019年仍在使用jQuery?
許多人提倡“只使用vanilla JavaScript,你不需要jQuery”。
其實我覺得許多JavaScript API - 特別是DOM API - 很糟糕。 el.insertAdjacentElement('afterend', other)無疑是有效的,但$(el).after(other)實際上是方便的,比DOM給我們的要好得多。
標準JavaScript API中的許多常見操作都很尷尬;,你仍然需要輔助函式來執行各種常見任務。
新增任何依賴性都帶來了複雜性和檔案大小的成本,但jQuery並不是那麼大:預設構建是30K縮小/壓縮,如果沒有ajax的自定義構建和不常見的只有大小23K,使用querySelector而不是SizzleJS的構建是17K 。原來的30K和最佳化的17K對於我來說似乎都是可以接受的。
你可以看一下Bootstrap刪除jQuery的例子,說明使用vanilla JS需要付出多少努力:他們編寫了自己的幫助器,不得不放棄IE支援,因為它太難新增,使得API不相容(“我們打破了一切“),我花了一年半的時間研究它。如果我看一下最終結果,我真的不能說它好多了。
我理解他們為什麼這樣做; 人們想使用Bootstrap和Vue.js等等,使用Vue.js和jQuery有點傻。我非常贊成減少“網路臃腫” ,但我們需要務實和現實。包括~17K的jQuery真的那麼糟糕嗎?
有一些很好的理由不使用jQuery:如果你正在編寫你想要被其他人重用的程式碼,或者你只是編寫一個小函式。
使用“jQuery所有的東西”可能不是一個好主意,但也不是 “unjQuery所有的東西”。
我沒有和jQuery結婚,我很樂意使用一個“jQuery light”,它可以修復JS API,更加可口。YMNJQ推薦使用bonzo 和$ dom,還有其他幾個用於AJAX等等,但許多似乎沒有維護。此外,每個人都已經知道了jQuery。為什麼要用其他東西替換它,除非有令人信服的理由?
有些讀者可能會想“關於Vue.js,React或其他一些現代框架呢?”這篇文章的目的是將vanilla JavaScript與jQuery進行比較,而不是提出一個Grand Unified Theory of Frontend Development 。
話雖如此,我認為有幾個理由堅持使用簡單的JavaScript; 主要是因為我想構建快速的網頁,使用最簡單的可行程式碼,並儘可能多的人訪問。根據我的經驗,伺服器端生成的模板輕輕地撒上“漸進增強”風格的JavaScript通常是最好的方法。它通常更容易開發,往往更快,往往有更少的錯誤。
從根本上說,我認為網路是一個檢視文件而不是作業系統的系統。即使對於許多“網路應用程式”(無論你的意思是什麼),文件方法都能很好地工作。
相關文章
- 在 Go 語言中,我為什麼使用介面Go
- GitHub:我們為什麼會棄用jQuery?GithubjQuery
- [譯] 2019 年了,為什麼我還在用 jQuery?jQuery
- 我為什麼使用 JavaJava
- 我為什麼要使用Webpack?Web
- 為什麼放棄jQueryjQuery
- Jquery會死嗎?我為什麼不用vue寫富文字!jQueryVue
- GC是什麼?為什麼我們要去使用它GC
- jQuery是什麼?如何使用?jQuery
- 為什麼在大型 Angular 應用裡我們需要使用 ngrxAngular
- 我為什麼使用Linux做開發Linux
- 為什麼我們不使用GraphQL? - Wundergraph
- 為什麼我們做分散式使用Redis?分散式Redis
- 為什麼我反對過度使用TypeScript?TypeScript
- 我為什麼要使用谷歌瀏覽器谷歌瀏覽器
- 我們為什麼要使用CRM系統?
- 我為什麼要做IT
- 我們為什麼推薦在Json中使用string表示Number屬性值?JSON
- 為什麼越來越少的人用jQueryjQuery
- 使用Netty,我們到底在開發些什麼?Netty
- 因果迷境:為什麼我們會問“為什麼”?
- 2019 為什麼我們還會繼續使用 PHP ?PHP
- 為什麼我推薦你使用 systemd timer 替代 cronjob?
- 為什麼我使用了索引,查詢還是慢?索引
- jQuery是什麼jQuery
- 為什麼我們需要 VuexVue
- 我們為什麼要用RedisRedis
- 我們為什麼而工作
- 我們為什麼需要CDP?
- 我在大廠做 CR——為什麼建議使用列舉來替換布林值
- 當我呼叫了$().append()後,jQuery內部發生了什麼?APPjQuery
- 為什麼我們要使用無伺服器架構伺服器架構
- 2020年,為什麼我們應該使用abapGit代替SAPLinkGit
- 為什麼我停止使用IPFS和分散式Web? - withblue分散式Web
- 在css中為什麼說不建議使用@import?CSSImport
- 為什麼要避免在 Go 中使用 ioutil.ReadAll?Go
- 什麼是Web workers?為什麼我們需要他Web
- 為什麼使用PythonPython