前幾天知乎上有一個問題:jQuery真的過期了嗎?個人答案是:jQuery確實過期了!感受這個話題挺有趣,那我們展開了聊聊。詳細地說一下jQuery爲何過期了。css
討論一個庫或者框架是否過期,應該先看看它解決了哪些問題,這些問題如今是否有更好的解決方案。前端
jQuery解決了哪些問題呢?webpack
瀏覽器兼容問題ios
IE678橫行的年代,瀏覽器兼容問題是前端小夥伴們必須掌握的技能,IE6有哪些bug,這得滾瓜爛熟。IE不識別哪些標準的JavaScript方法和對象,這也得記住,寫個ajax,別人都用XMLHttpRequest,到IE就得用ActiveXObject。苦逼的前端程序員不能專心研究技術,只能每天爲瀏覽器廠商擦屁股。直到jQuery的出現,你們解脫了,DOM操做也好,事件綁定也好,ajax也好,jQuery爲咱們封裝了兼容各個瀏覽器的方法,感受整個世界都和平了。css3
選擇器程序員
沒有jQuery,咱們要用getElementById、getElementsByTagName這些方法獲取DOM對象。爲列表全部元素綁定事件,要麼事件委託,要麼遍歷全部元素。爲了搞定操蛋的DOM接口,咱們掌握了各類奇淫技巧,其實毛用沒有。有了jQuery,咱們能夠用css選擇器獲取元素,綁定事件也不在須要遍歷元素列表了,整我的都清爽了。web
動畫效果ajax
我清晰地記得第一次用計時器寫動畫,如何讓一個元素動起來,再如何讓它中止運動。調試完,無bug,這就用了一堆代碼了,更不用說作一個完整的頁面效果,想一想就讓人崩潰。在看看jQuery爲咱們提供的動畫效果,簡直不敢想象沒有jQuery,咱們如何在IE678裏面實現咱們想要的效果。axios
總結瀏覽器
jQuery解決的痛點還遠不止這些:它的DOM操做,樣式操做,屬性操做,事件綁定,還有遍歷,表單序列化,ajax封裝,這些功能給前端開發帶入了一個嶄新的世界。一直到今天,jQuery仍然是被前端開發者使用最多的庫,沒有之一!
jQuery給前端帶來的影響是空前的,可是隨着前端的發展,jQuery也進入了一個過期的狀態,它爲咱們解決的痛點都已經有了替代方案。
瀏覽器兼容
瀏覽器的兼容問題愈來愈不是問題,IE6能夠說已經被淘汰了(目前只有大型國企、事業單位、機關部門還有醫院中的XP系統還保留着IE6,可是也開始逐步淘汰中)。天貓去年已經宣佈再也不支持IE8。雖然瀏覽器兼容問題仍然存在,可是已經不是當年那個坑翻天的時代了。
選擇器
CSS3新增了大量選擇器,操做樣式,想怎麼找就怎麼找,沒必要麻煩jQuery。
原生的JavaScript也新增了querySelector和querySelectorAll方法,能夠直接經過css選擇器獲取元素。
動畫效果
css3提供了豐富的過渡和動畫效果,讓咱們再也不依賴jQuery。
ajax
fetch和axios這些第三方模塊已經將ajax封裝得至關出色了,咱們不再用爲了一個$.ajax就引入jQuery。
DOM操做和事件綁定
拋開動畫的問題,剩下主要就是數據的增刪改,這種操做用jQuery,無論從性能的角度,仍是易於開發和維護的角度來看,mvvm框架都要超jQuery不少。
組件化和模塊化
組件化和模塊化的開發是如今前端開發的主流,優勢簡單的說就是易於開發、易於維護、易於團隊分工。
jQuery是能夠組件化開發的,可是用jQuery寫組件,就用兩個字形容:蛋疼,誰用誰知道。
模塊化不論是用ES2015也好(import,export),用webpack也好(require,module.exports),再不行,我們復古有點用require.js或者sea.js,這顯然和jQuery都沒什麼關係
綜上所述
jQuery全部的優勢都有更優秀的解決方案,能夠確定的說,jQuery已通過時了!
(若是貴公司要求兼容IE678,那就另當別論了。)
jQuery雖然已通過時了,可是並無被淘汰,並且近幾年也不會。
如今市面上的大部分網站和應用仍是基於jQuery,在此後的幾年,他們仍然須要用jQuery維護。
不少公司沒有專職的前端開發,他們的前端工做由後臺負責,這些人更喜歡用jQuery加後臺模板的工做模式。
部分兩三年以上工做經驗的前端開發,他們安於現狀,排斥css3新特性,也沒耐心學習mvvm框架,jQuery還是他們的主要工具。
IE678並無消失,因此jQuery仍有用武之地。
jQuery易於上手,仍然很適合作一些簡單的網站。
綜上所述,jQuery並無被淘汰,仍然是新人必須技能之一。
jQuery雖然過期了,可是jQuery仍然是前端開發的必備技能,對於一個前端新人,這個坑必定得踩。
若是您以爲有收穫,請不要吝惜一個小小的【贊】,若是喜歡相似的文章,能夠關注微信公衆號:【曉舟報告】,第一時間獲取文章。