jQuery真的過時了嗎?

JQuery一直是公司項目普遍使用的前端框架,甚至是我就沒上手過用別的前端框架寫的項目前台,覺得現在雖然出現了太多所謂高級的前端框架,比如angular.js/react/vue.js等等。。。但是對於普通的項目,真的需要跟緊形式以及跟近新技術嗎。我們公司目前是做公共安全軟體平台的,給公安刑警做提高工作效率的軟體平台的,說真的用的技術都很老,前端後端都是最普通最老九的技術。。。想知道有必要更新前端技術嗎?用把現有項目前端改掉嗎?


談論 jQuery 的時候不應該僅僅只看到 jQuery 本身,它最大的價值在於這麼多年來社區積攢的各種插件啊。

無論是做日期選擇器還是輪播圖,甚至搞個播放器,都可以分分鐘找到一個對應的插件。

比如 CSS transitions and transformations for jQuery 這個動畫插件,我到現在也還在用,完全沒問題。

新技術對應的一定是新問題和新場景。比如為什麼會有鋼筋混凝土建築,因為我們需要蓋更高的樓,你也可以用這個技術來蓋平房,因為原來的房子不結實,抗震性能不好。總之,我們給技術升級總是有一個確實的理由,而不僅僅是對於新技術的盲目追隨。

在題主提到的場景中,項目的開發人員有多少,開發進度怎麼樣,維護成本如何,基於這個情況,我們再來考慮,引入新技術是不是可以節約人力成本,優化開發進度,降低維護成本。

大馬一定可以拉小車,但是值不值得為了這個小車去買一匹大馬,這是要考慮的問題。

覺得現在雖然出現了太多所謂高級的前端框架,比如angular.js/react/vue.js等等。。。但是對於普通的項目,真的需要跟緊形式以及跟近新技術嗎。

感覺題主對現代框架的特性和應用場景並不了解,建議可以了解一下這些框架的特點,是不是確實能夠切實有效的對現有項目進行優化,再來決定是否更換。

一個人選擇框架的時候啊,當然要靠自我奮鬥,但是也要考慮到歷史的行程。


我重新答一下吧

先問一個問題:

程序員的工作是什麼?

你可能會說「改變世界」,不好意思,能改變世界的程序員從古至今不到 10 個。

你可能會說「寫代碼」,不好意思,程序員工作時間 50% 都不是在寫代碼。

程序員的工作說到底只有兩個:

  1. 做需求(大部分時間在撕逼)
  2. 維護舊代碼(大部分時間在讀代碼)

這兩個裡面,「維護舊代碼」又是重中之重。

你去京東、淘寶、天貓的首頁去看看,不是 jQuery 就是類 jQuery,為什麼?

因為這些都是舊代碼,已經運行了五年以上。

不管 jQuery 過時還是不過時,你只有能維護這些 jQuery 代碼,大公司才會要你。

程序員從來不在乎一個東西過時沒有,只在乎這個東西「有沒有用」。

VB 語言這麼過時,為什麼年年都在全球語言排行榜前 20 名?

因為有無數使用 Office 的開發者在用 VB。

有人用,就有錢途。

那為什麼現在面試都不問 jQuery?

因為默認你已經會 jQuery 了呀,問什麼問。

為什麼淘寶不用 React 重寫呢?

呵呵。你問問知乎的前端團隊用 React 重寫知乎之後的感受吧。


嗯。jQuery過時了,PHP也過時了。但用PHP + jQuery開發站點的人還沒過時。


過不過時,就看面試的時候有沒有人問你jquery源碼

不巧,我沒多久之前就被問了

我當時腦中一片空白,據我看源碼已經過去好多年了,還問我裡面細節如何實現的,嗯,我服

不可否認jquery在歷史進程中的貢獻,到現在還在為很多網站貢獻著自己的力量

有時候我摻著用,但是jquery在我這兒的使用量明顯比前幾年少多了


強答一波~~

其實我真的想不通,為什麼總有人老要去糾結什麼框架什麼庫過時不過時的問題,如果你能把糾結這些的時間花到這些所謂的過時的或者流行的框架或者庫的底層源碼研究上去,等哪天你能把那些框架或者庫的設計思路,設計模式應用,api設計等了解,甚至能夠非常清楚這些設計「套路」的時候,你會發現~~~

你離漲薪不遠了~~~


用的順手的東西,寫著寫著習慣性的就想用了.

曾經為了避免載入不必要的庫,打算自己實現常用的幾個jquery功能代碼,然後發現還是沒有經過時間雕琢的jquery的用起來方便,費時費力不討好,後來就逐漸淡了這份心思.

工具而已,好用,提升工作效率,就用,適合自己的就好.

跟風是跟不過來的.

工作中的改進,也是循序漸進的,很少有直接咔嚓掉推翻重做,代價和風險太大.


沒有過時,現在用jquery或者zepto來寫一些非常傻逼的展示性、活動性頁面還是很爽的,而且快。

個人認為,jquery會一直活下去,成為前端的基礎設施之一。


自己掌不掌握是一回事

項目中用不用又是另一回事

過時的該學得學,超前該學也得學,大眾化的、非主流的,有精力的話最好都要了解。

只是到一定程度,掌握一個框架或者庫什麼的,所需要的時間會越來越少。但這些都是學出來的,練出來的。


jquery是一個庫,核心其實就是簡便地操作DOM和兼容瀏覽器

雖然隨著前端的發展,現在已經不提倡直接操作DOM,同時現代瀏覽器也逐漸標準化,現在選型的時候,jquery已經很少被考慮,但是jquery這種優秀的js庫,它本身的一些思想和打磨過的代碼是非常值得我們去學習的

而且這個問題不能脫離真實的業務場景,真的有很多系統就是使用jquery,這個庫已經誕生十年了,它是前端領域被使用最廣泛的一個庫,還有一大堆基於jq的插件,把以前的代碼推倒重建?這是有成本的,人力的投入,踩坑的成本等等,如果jq符合你的業務場景,那就應該使用jq

現在環境好了,以前只有jq是最優解決方案,現在你有了很多選擇,只有最貼合你的業務場景的才是最好

而且對於前端開發者來說,jquery沒啥學習成本啊,說不定你下家公司就還在使用jq


個人認為,對於框架選型來說,應該選擇最適合自己公司項目的而不是目前市場上最新的。對於開發人員來說,首先要會的是自己公司正在使用的,其次是市場佔有率較高的。前者是更好的為公司服務,後者是更好的為未來服務。

現在(2017年)是否還有必要學習jQuery?

樓主可以看看這個。


jquery也好,react/angular/vue也好,一層一層地往上搭,搭到最上層都是組件調用。jquery需要在底層做更多的工作,但是也意味著你對底層邏輯的掌控力更強。jquery粒度細,更自由,但要求開發者有很強的工程架構能力,適合高手。react/angular/vue封裝了很多東西,適合小白。

再說,現在的mvvm,通過各種指令,把大量的業務邏輯移到模板里,真的很不喜歡。還是比較喜歡邏輯集中在js里處理,簡簡單單的模板。


jQuery已經過時了!我們先來看看jQuery解決了哪些痛點:

  1. 瀏覽器兼容問題
  2. 便捷的DOM操作和動畫效果
  3. 封裝ajax

在看看現在前端的形式

  1. 瀏覽器越來越趨於標準化,兼容問題也越來越不是問題(不用說IE6,現在IE8都可以淘汰了)。
  2. 動畫效果再也不用像以前那樣用計時器寫了,CSS3已經普及,動畫也變得不是問題。
  3. DOM操作和事件綁定,拋開動畫的問題,剩下主要就是數據的增刪改,這種操作用jQuery,不管從性能的角度,還是易於開發和維護的角度來看,mvvm都要超jQuery很多。
  4. 封裝ajax,可以完全用fetch或axios這些第三方模塊取代。

綜上所述,可以肯定的說jQuery已經過時了。

但是使用jQuery的仍然多於mvvm,基於jQuery的web應用和網站(主要是網站)jQuery的數量仍然多於mvvm框架。這種狀態還會保持一段時間,但是應該不會太長。


angular.js/react/vue.js 你要理解這些框架最大的作用是什麼?

最大的作用就是簡化單頁運用的開發。組件化開發。

單頁運用的好處是什麼?提高用戶體驗,可以將很多功能集成在一個頁面內,提高操作效率。但需用 很好的做好UI規劃。然後網頁可以提供接近桌面程序的操作體驗。

jQuery還是傳統的頁面開發,一個頁面功能不多的時候的利器。簡單任務開發超級快速。但如果你要在單個頁面上集成多個功能點時,還使用jQuery,代碼管理及界面設計就會超級累。而angular.js/react/vue.js等mvvc框架很容易就將要求拆成多個組件再組合起來。


說一下我的情況吧

從學習前端到現在沒有認真學習過jquery

倒是js學習的比較多,

講道理當時我js學的很深入,覺得為了找工作還是要學習一下jquery的,然後在圖書館找了一本書學了一下。

第一感覺就是jquery像一個大雜燴,明明只是實現很簡單的功能卻要創建一個「巨大」的jquery對象。反正我是不太喜歡這種感覺。

我到現在為止都是寫原生js比較多,寫一些單頁應用用的vue。對於一些常用的工具方法(如操作class啊,ajax啊,promise啊)也有自己實現的封裝,promise已經標準化了都不用寫了。

還有就是簡單的動畫效果,用自己寫的操作class的方法加上css3的transition+transform基本能滿足我的需求。

jquery對於我來說最有用的就是解決了兼容性吧,如果有明確要求只兼容最新版瀏覽器,兼容性基本都不用寫了。

jquery還有一個很方便的css選擇器,已經被es標準化為querySelector(),選用jquery的理由又少了一個。

jquery又一個方便的就是鏈條式語法,這建立在「巨大」的jquery對象的基礎上,像一開始所說的反正我是不喜歡這個「巨大」的jquery對象的。

但是如果老闆說要用jquery,還是得用

以上純屬個人觀點,如果有錯誤的歡迎指正


別管過不過時,反正前端連jquery都不會用肯定是辣雞前端


有人說簡單的構建網站,展示數據用jQ就夠了,確實,在過去十幾年裡,jQ份額一直大頭,乃至於現在都是大頭,留下一堆祖傳代碼,還有人比喻,簡單的展示數據,用jQ就夠了,用mvvm框架就像是殺雞要開航母出去。

這個比喻其實不算得很正確。

如果現在,有一把小鋒利的小匕首和一把全自動機關槍,給你殺人,你選擇啥?

  1. 作為大部分都是普通人,初學者,我相信稍有點智商的傻逼都會選自動機關槍,而不是什麼小匕首。
  2. 有人又說了,匕首殺人無聲無息,用好了更牛逼。現實一點吧,知乎er,不是每個人都是「高手」,也不是每個人都想成為高手。

對於現在的mvvm框架和jQ的對比而言,其實就是「小鋒利的小匕首和一把全自動機關槍」的關係。

  • 你要懟死一個人,小匕首確實足夠了,但是會帶來很多的問題「你技術不好怎麼辦?」「你插人不準怎麼辦?」「你插了別人,別人沒死,反撲你怎麼辦?」,還不如一把機關槍,對著那個人,直接打成馬蜂窩,如果這都殺不死,那你拿啥都沒用。
  • 那拿機關槍頂多就是「比較難善後」,聲音太響。

但是,我們的目的就是懟死一個人,遵循這個目標而去,機關槍是最佳選擇。

同樣,mvvm框架也一樣,這幾個mvvm框架的出現就是解決了:

  • 項目維護太幾把難
  • 毫無節制的操作DOM
  • 模塊化太難做

所以,jQ確實是過時了。


不見得某寶某xxxoo還是jQ的遺留產物就一定非得去學,換一句話說,就算你現在學會了jQ人家淘寶網也不會要你,所以不要浪費時間,把vue/react/ng搞明白就夠夠的了。


題主是問有沒有必要重構!

我覺得吧,完全沒有必要,重構帶來的風險很大,除非你有領導支持,並且本身技術水平相當過硬,否則還是老老實實維護老的代碼吧。

不過你完全可以在裡面使用vue的核心庫啊……

另外想學新技術,自己重寫個項目,放git上,生產環境還是省省吧,這個不僅僅是技術上的事。


jquery當年的存在幫助我們解決了瀏覽器兼容性問題以及一些新的api或者說功能,核心是解決了開發效率

然後N年後的今天,我們的核心痛點是變成了模塊重複高效利用+開發效率

so jquery解決核心痛點上算過時了

但是從jquery的生命周期看來,至少我們知道了能解決核心痛點的東西才能持續火

so jquery還是永遠能活在我們心中的


半年前我給自己提出了與題主相同的問題:兩年經驗以下的web前端們需要注意什麼?

裡面有一小段講述了自己對這個問題的思考:

這節我們來單獨聊聊這個近在眼前的話題。

近幾年優秀的MVC/MVVM框架湧現出來,慢慢呈現出三足鼎立的局勢,即 Angular,React,Vue。對於js開發者來說,這是一個巨大的進步。

儘管它們的存在並不與我們的舊霸主jQuery沒有直接的對立關係,但人們出於用戶帶寬的和代碼維護性等方面的考慮,很少把他們和jQuery放在一起使用,並且我們在大多數時候可以用MVVM的方式去實現jQuery基於DOM的編程方法要做的事情。這就暗示著"不是你死就是我亡"。

舉個簡單的例子,「顯示一個元素」這個功能用jQuery來實現:

$("#el").show();

而使用MVVM是這樣:

&& xx.isShow = true;

但是我們如果只需要處理"顯示元素"這類簡單的問題的話,使用jQuery或者MVVM的方式都無所謂了。

當我們面臨需要頻繁的插入一大段含有js變數的HTML

//jQuery
var html= "&"+
"&"+
"&

{{title}}&"+
"&"+
"&"+
"&"+
"&"+
"{{Content}}"+
"&"+
"&"+
"&"+
"&"+
"&";

//然後做模板處理

//最後插入
$("#parent").html( html );

相比之下:

//MVVM

&
&
...
&{{title}} & ...
&{{content}}& ...
//javascript
xx.title= "title";
xx.content= "hello,world!";
xx.isShow = true;

簡潔性和可讀性相形見絀。並且在越複雜的操作DOM的情況下,就能顯示出MVVM的優勢。另外在處理用戶輸入的等情況時候,雙向綁定的便利就突出了。

我們雖然很支持去使用MVVM框架,但即便這樣我們也不能下結論完全摒棄jQuery。有時候在瀏覽器兼容性考慮苛刻和對於一些兼寫前後端的開發者來說, 學習成本低的Bootstrap + jQuery組合的地位還是有的。至此評定是否使用的MVVM的標準是:看項目是否允許和適合使用,兼容性有要求或者過於簡單的沒必要搭上這麼重個東西,不然就小題大做,除此之外我們還是多去探索和嘗試。

另外作為一名前端開發者,也要跟進時代的腳步,不能拉下對這些框架的學習,總會並且很快就有用到的時候


講真的,我在廣州工作也是幫公安廳做一個網站,用的還是ext.js,這種網站只要求穩定,對於新技術沒必要跟進。


推薦閱讀:

amaze ui和bootstrap有哪些差別?
有沒有適合HTML&CSS初學者模仿的靜態網頁?
使用哪一個電腦?
類似vue-cli這樣快速構建項目的腳手架是怎樣開發出來的?
為什麼前端精通Node.Js的人這麼少?

TAG:前端開發 | 前端工程師 | 前端入門 | 前端開發框架和庫 | 前端框架 |