隨著各種前端MVVM,MVC框架的流行,jQuery等傳統JS庫是否有走向邊緣的趨勢?

前端時間不是有一篇文章叫做《在 2016 年學 JavaScript 是一種什麼樣的體驗?》,雖然這篇文章更多的是從娛樂的角度描寫,部分細節過於誇張,但是也確實有很多人說過:用jQuery來實現webapp容易導致代碼量增大,且不優雅,頁面的內容,狀態控制很麻煩,性能低下,html和jq代碼耦合性變大。所以,隨著各種前端MVVM,MVC框架的流行,jQuery等傳統JS庫是否有走向邊緣的趨勢?(這裡所指的走向邊緣,也可以理解為一些非常簡單的網頁功能或者特效用jq,稍微大一點的仍然會選擇前端MVVM或者前端MVC框架)


單從技術的角度看技術的發展,容易出現誤判。

一個技術的出現是為了解決某一個具體問題,或者某一類問題,而這些問題並不是憑空出現的,它們可能產自於:

  • 技術廠商之間的競爭或者協作
  • 業務需求的量變或者質變
  • 多目標優先順序的變化,比如從質量第一變為效率第一,或者創新第一

我們這幾年看到的成批出現的前端技術都有各自的業務場景和業務歸屬,去看看 React 和 Ng 的歷史,其實就是大公司那麼一小撮人為了解決業務問題而提出的技術方案,成熟後往外推廣時,得到了業界的認可,認可的原因是因為大家遇到了同樣的難題。

回到問題,諸如 jQuery/Zepto/Underscore/Loadsh/jQuery UI 等等這些用的比較廣泛的庫和框架是否會走到邊緣,然後被人冷漠?毋庸置疑,隨著瀏覽器的發展和業務需求的變更已經讓這些東西的核心價值失去了立足點,它們的時代已經結束了。我在這個問題里做了一些回答:jQuery 解決了怎樣的問題? - Barret李靖的回答,感興趣的可以點進去看看。

但是需要聲明的是,並非所有的業務場景都是複雜的,jQuery 退居二線並不代表不再提倡使用它,物競天擇,適者生存,jQuery 自身也在不斷的進化中,四年多前就開始推出不支持 IE 6 7 8 的版本,然後出現了重構的簡化版本,輕量出場得到了大眾的追捧,在很多場景下依然是有市場的。尤其是在國內這麼「惡劣」的環境下(IE 6 撐了 10 年),jQuery 已經成為了瀏覽器編程的專屬裝備,暫時還沒有對 DOM 操縱的完全替代品。


如果『走向邊緣』定義是你括弧里描述的意思的話,那麼 是的。

簡單頁面和業務場景直接用 jQuery,複雜的、多人協作的、大量的要用框架。


太空梭都退役了,也沒見自行車退役啊。


預測趨勢的事情,還是得看廣大群眾的呼聲,如果大家都不用了,自然就走向沒落了。

考慮到目前各大公司網站架構還沒有走向同構JS,大部分公司PC主站仍舊採用傳統的服務端渲染方式。

我認為jquery 還是有市場的,只不過這個市場會隨著網站架構演進和瀏覽器廠商對新標準的推進而越來越小。

jquery 難以維護?

是的,和DOM選擇器綁在一起,讓開發者很難專註於JS邏輯,一個樣式改版得小心翼翼的盡量維護原來的DOM結構。

MVVM會主流?

我看國內沒有幾家公司能夠在服務端維護一款headless WebKit 以應對MVVM在SEO上的缺陷,當然了移動端和VR相關SEO需求較小,MVVM完全可以佔領這個市場。

同時,隨著JS在前後端的實踐日益深入人心,jquery作為快速的DOM選擇類庫,在服務端也有很大的應用價值,經典的應用比如爬蟲。

綜上所述,PC主站在未來一段時間離不開Jquery ,移動端正在走向MVVM 工程化。

話說,jquery和mvvm兩者並不是純粹的競爭關係。前者是工具類庫,後者是一種框架模式,雖然大多數情況是有他沒我=.=


數據驅動的寫法比事件驅動爽多了。數據驅動已經成為主流,因此事件驅動的jQuery一定會非常邊緣。

簡單的功能直接用原生 JavaScript 也全部能搞定

簡單的特效 CSS3 基本就能全部搞定

可以參考

You-Dont-Need-jQuery/README.zh-CN.md at master · oneuijs/You-Dont-Need-jQuery · GitHub


不是有句話,小孩紙才分對錯,大人只看利弊

借用最近正火的美國大選做個比喻,jquery 是特朗普,mvvm 是希拉里,前者老土務實有廣泛的群眾基礎,後者時髦精英代表『未來』,但近幾年還是老普的天下


jQuery就像一個正常人,會掉一些頭髮,但頭髮終究還算茂密。以後怎麼樣不知道,但至少目前的情況是這樣吧。


這文章是我翻譯的,翻譯的過程中隱隱感覺作者有一絲諷刺的意味,但作者並沒有明顯得表達出來了。究其原因,應該是作者也覺得 jQ 那一套用了七八年確實需要一點變化了,但是作者又不認為現在的變化方向的對的,所以作者就沒有明顯地挺誰。

先回答你的問題,jQ 是否會被邊緣化。

不會,而且在未來五年依然是主流。

為什麼會是主流?

因為

一,「絕大部分」程序員的主要工作就是「維護舊項目」。去看看淘寶首頁,還是在用 KISSY,你看有沒有人願意用 Vuejs 等等框架重寫淘寶,為什麼早就入土的框架淘寶還在用?回到我前面說的——「絕大部分」程序員的主要工作就是「維護舊項目」。加幾十行代碼我的工作就完成了,為什麼要去重寫淘寶?

二,世界PV排在前十萬的網頁,有百分之七十以上在用 jQ。你還好意思說 SPA 框架是主流嗎?你能想到幾個大眾常用的網站是用 SPA 框架做出來的,掰著指頭就數完了。所以 SPA 才是小眾。

最後糾正提問者的話:

前端想要炫技,必須學會這些 SPA 框架(注意我並沒有說學會這些框架就是為了炫技),jQ 在炫技方面已經被邊緣化了,因為 jQ 是前端的基礎知識,基礎知識怎麼用來炫技?

完。


很正常,當一個團隊共同協作需要維護一個大型項目時,規範易用的框架是首選,平常自己寫個小demo的看情況,簡單就上jQuery。其實另一個問題在於團隊整體的代碼規範,用框架的話,能確保團隊不寫出那麼難以維護的代碼,不用框架有沒有什麼嚴格約束的話就很容易寫得自說自話了。


並沒有, jQuery 依然很流行,而且新版的jQuery 也在不斷的進步。

其實目前來說,jQuery成為了一個幾乎是前端都必須掌握的庫,

而且jQuery並不和其他mvc mvvm的框架衝突, 甚至可以很好的配合.

從HACK舊版本瀏覽器來說,jQuery的解決思路是很好,事件的綁定和解綁,以及自定義事件等(jQuery的事件對象是自己的封裝,原生事件對象擴展出來的,因為原生的事件對象自定義屬性是不可寫的)

至於取代,我覺得不可能. jQuery的開源插件生態異常豐富, 一些業務邏輯簡單網站完全沒必要用花哨的mvc mvvm來做,等於殺雞用牛刀.

流行mvc mvvm,只不過為了方便前後分離的開發方式. 方便解耦

而且人們似乎厭倦了jQuery這種無腦$的方式,更喜歡其他框架提供的「語法糖」


同意@於江水 的這句話。

如果『走向邊緣』定義是你括弧里描述的意思的話,那麼 是的。

jQuery總不可能完全適用於所有場景。但依然適用於大部分場景。jQuery和各種框架之間不是競爭關係。


現在的趨勢是 jq 整合進 DOM API。

jq如果真的是邊緣的話,angular就完全不會包含一個小型的jq。

DOM API 中也就不會加入 querySelector和 fetch等內容,DOM 4 API 也沒必要重新修訂了。


感覺題主的問題中隱隱透著危機感,其實沒必要,前端領域最近之所以出現這麼多新東西新概念,大有一舉顛覆前端界之勢,我覺得一部分原因是名人效應,那些大牛處在這樣的需求環境中,所以他們做出了新東西興沖沖的推廣給大家,大家一看卧槽高大上隱隱的還有點看不懂呢,牛逼,其實很可能是因為我們並不處在那個需求環境中,學了也沒有很大的實用價值,jquery在事件驅動dom操作上的地位永不動搖,可能動搖的是你要選擇事件驅動還是數據驅動,這個跟技術沒關係,所以不要擔心,沒有什麼技術是非學不可的,一切看需求。


我還是大四,自學前端,實習過倆月,簡單學習過jq,實際開發基本沒用過,用過ng1,es6,現在在學react。

個人感覺jQuery在當前MVC MVVM流行下是有點邊緣化了,看大家交流的,感覺現在還用jQuery的都不好意思說自己做前端了,感覺low了一個檔次。

再者,JQuery對於開發來說真沒那麼必須了。

不過對於初學者,jQuery可以學一學,因為很多jQuery的思想方法都值得學習,而且對於新手來說好上手寫代碼,很多東西封裝的比js本身好用,篩選器,封裝好的ajax都很方便,而且一開始新手接觸MVVM,MVC框架也不好上手。

總的來說,對於開發用,我覺得jq有點被邊緣化,都不夠裝逼的( ??ω?? ) 。


cocoa以前有個框架three20

死多年了

趕腳前端比客戶端落後很多年

垃圾當寶

不過objc很多人跪舔的block

js里不是個事 有人還叫回調地獄呢

嘿嘿


在nodejs 無法大面積接管服務端渲染的前提下,這jquery 還有很長的存活時間,1是生態,畢竟它有各種現在工具插件,即使現在原生的越來越好,但是一個複雜的插件,如果自己去實現,也能把團隊不大的公司搞死,2大多數公司,不需要複雜的前後端分離,特別是c端,複雜分離,在性能上,不見得比不分離強,而且c端頁面的個性化比後台項目複雜,不利於重用,開發成本可能更高,還要考慮seo

所以還得等幾年吧


我們公司用的 react 。至於Jq的使用,看你幹嘛了,寫組件的話感覺用到 Jq 的機會比較多。做項目基本用不到,但凡做項目用到 Jq 了, 一定是組件寫的不夠好,提供的 api 不夠豐富。

還有,一直覺得 Jq 不能稱之為框架,就是個純粹的工具。


jQuery本身也是有一個數據緩存系統的,.data()方法就是用來把數據綁定到DOM上的。使用jQuery照樣也能實現MVC:TodoMVC | UI Schema


都是ZB的!jQuery不會沒落,跟mvvc並存!


說點不太對題的

有一段時間沒怎麼用過jQuery了,之前一次偶然的機會 去gayhub上看了看jQuery,發現都3.x了。我一直停留在2.x的印象。具體change我沒去看 。jQuery也是在發展,但是我覺著require + jQuery + jQuery plugins + Bootstrap很難成為現在很多人做項目的首選技術。畢竟ng vue react如日中天,而且各大公司招聘也是對這些框架有要求,再加上前端這個前♂端的名字,大家也都踴躍的去學習去使用這些並且也是各種撕x。

但是,至於如何選型,之前看過@司徒正美的一篇文章,我是很贊同的~具體鏈接我找不到了。

其實對於包括我在內的很多人來說,重要的是如何使用簡單的方式以不失運行效率的前提來提高開發的效率,以此來滿足工作的需要。這也就是某個框架現在如此火的一個原因。

另外,說用jQuery的話耦合度太高,這是真的,但是使用一些best practices以及借鑒組件化的思想,其實可以在頁面結構不是巨變的情況下,保持腳本的基本不變,也能有好的可維護性。當然如果巨變的話,那當我沒說。

最後,像jQuery Grunt seajs mod這些,我覺著會慢慢邊緣化(其實裡面已經有邊緣化的了),但是現在,我們可能還是會在不少地方需要用到它們,並會去向它們學習。

走在前端路上的人,很容易被技術的浪潮搞的迷茫,甚至盲目,幾個不小心,就會被拍死在沙灘上了。


推薦閱讀:

mvvm中 viewmodel該如何設計?
如何正確使用Vue.js的組件?
AngularJS 有沒有缺點?MVVM 框架中有比它更好的嗎?
React中的virtual dom是否可以理解為當前組件的view model?

TAG:前端開發 | JavaScript | jQuery | MVVM | AngularJS |