使用還是不使用?學習還是不學習?讓我們看看如何完全避免使用jQuery,以及保留使用它的原因。
無論你在JavaScript框架和庫方面有什麼偏好,jQuery在JavaScript生態系統中發揮了重要作用。
幾年前它更受歡迎,現在一些jQuery的需求已經被現代瀏覽器替代(幸運的是!),但這個JavaScript庫仍然被許多人使用。
為什麼jQuery一開始會變得如此受歡迎?首先,jQuery誕生於JavaScript應用程序還不是主流的年代。在2000年代初至中期,JavaScript主要用於賦予網頁中出現的幻燈片和其他小工具(如圖片庫、日期選擇器等)功能。如果過於複雜,JavaScript很難進行許多操作(當然,電腦當時也更慢)。
值得一提的是,jQuery並不是唯一的或第一個庫。那個時候其他庫也非常受歡迎,比如Mootools、YUI、Dojo Toolkit、Scriptaculous和Prototype。jQuery後來可能成為了那些庫中最著名的。
當時的瀏覽器存在許多互操作性問題。我們遇到了很多跨瀏覽器的怪異行為和標準化問題,而jQuery通過創建一個抽象層並處理所有解決方案來幫助我們。
jQuery允許你使用CSS選擇器語法來選擇DOM元素,它非常用戶友好且易於擴展。它使JavaScript動畫變得簡單。
同時,它還簡化了使用AJAX(及其跨瀏覽器差異)的操作,這在時下非常流行的術語中也為jQuery帶來了一定的知名度。
如今,我們已經沒有太多的瀏覽器兼容性問題了,Selectors API和Fetch使瀏覽器標準化了jQuery的兩個最佳功能。
jQuery肯定是一個充滿爭議的主題。有些人說jQuery是過時的遺物,有些人仍然每天使用它。有些人花時間撰寫「為什麼我們不需要jQuery」的文章。
在過去幾年中,它的使用率確實有所下降:
如今,JavaScript的面貌已經截然不同。但是,了解jQuery的用途仍然是有用的。
曾經使用jQuery的功能現在已經有了標準化的瀏覽器API
選擇DOM元素
jQuery的用法:
$('.button')
現在我們可以使用Selectors API:
document.querySelector('.button')
如果需要多個元素:
document.querySelectorAll('.button')
等待DOM加載完成
jQuery的用法:
$(document).ready(() => {
//...
})
DOM的做法:
document.addEventListener("DOMContentLoaded", () => {
//...
})
為DOM元素添加或移除類
jQuery的用法:
el.addClass('big')
el.removeClass('big')
el.toggleClass('big')
DOM的做法:
el.classList.add('big')
el.classList.remove('big')
el.classList.toggle('big')
從DOM中移除元素
jQuery的用法:
el.remove()
DOM的做法:
el.remove()
(是的,沒有變化)
更改DOM元素的內容
jQuery的用法:
el.text('Hello')
el.html('Hello')
el.text()
el.html()
DOM的做法:
el.innerHTML = 'Hello'
el.textContent = 'Hello'
el.innerHTML
el.textContent
選擇DOM元素的父元素
jQuery的用法:
el.parent()
DOM的做法:
el.parentNode
監聽DOM元素上的事件
jQuery的用法:
el.on('click', (e) => { /* ... */ })
DOM的做法:
el.addEventListener('click', (e) => { /* ... */ })
AJAX請求
jQuery的用法:
$.ajax({
url: '/api.json',
type: 'GET',
success: (data) => {
console.log(data)
}
})
現代JS的做法:
fetch('/api.json')
.then(response => response.text())
.then(body => console.log(body))
動畫
現在瀏覽器可以使用CSS過渡或CSS動畫來實現jQuery動畫。
瀏覽器特性
使用Babel編譯代碼,或使用特定的polyfills(polyfill.io)
在當今的情況下,應該在新項目中使用jQuery嗎?
讓我們回答一下這篇文章標題中提出的問題。如果你還不熟悉jQuery,現在學習它是否值得?
在我看來,對於僅針對現代瀏覽器的新項目,不應再使用jQuery,當然,如果你的項目因為某些獨特原因或僅因為你使用插件或其他需要jQuery的代碼而依賴它,那麼肯定要繼續使用它。
一些庫也依賴於jQuery,比如Bootstrap。你也可以購買使用了jQuery及其插件的現有模板。
也許你在一個團隊中,前端開發人員並不都是JavaScript專家,他們更習慣於使用jQuery而不是新標準。如果這樣做可以完成工作,那就很好。
也有可能由於需要支援舊瀏覽器的舊標準,你不能使用最新的炫酷技術(如React或Vue),在這種情況下,對於你來說,jQuery仍然非常重要。