你們或你們的團隊為什麼拋棄了jQuery,轉向了angularJS等框架?
如題。
jQuery的性能是不是僅次於原生JS ,優於其他框架?
瀉藥
我先說為什麼放棄 jQuery 吧- 原生 JavaScript 越來越強大
- 移動瀏覽器兼容性問題減少,使得 jQuery 兼容性方面的優勢不再凸顯
- 網站業務越來越複雜,人們需要更強大的框架來支撐業務,而 jQuery 及其衍生庫都無法完成
- jQuery 的開源生態是一個一個的交互組件,但是結構性不強,代碼質量不好
---
大家到底是怎麼看待 jQuery 的呢?- 85%:拿 DOM 的 $("___") 函數 + 事件綁定
- 10%:Utility 函數庫,要啥有啥
- 4%:寫一個有很多交互的前端頁面所要用到的底層庫
- 1%:一種編程語言
大多數幾年前開始學習前端的人看待 jQuery 就像是一種 JS 在網頁中開發的標配工具,它雖然沒有 loadash / underscore 這麼工具化,但是基本上就是被看成了 JS 擴展式的存在。
因此,太少人把它看做是一種寫複雜業務邏輯的框架,它也並沒有被設計來做這個事情。隨著需求越來越豐富,我們在網頁里可以看股票行情了、可以打遊戲了、可以畫畫了、可以直播了,它的價值毫無疑問就被取代了。---
最後給 jQuery 正名一下- 它依舊是使用率最高的庫
- 它就像是一個古老氏族的血脈,很多新的氏族(活躍的庫)都有它的血緣,因此不會被快速拋棄
- 它在兼容性上的貢獻,我們看不到,也不 care,卻價值巨大
- jQuery 其實是我們這一批在學生時代自學前端的人的小回憶呢!
---
哦,剛看到 @寇雲 邀請我是因為我禁止前端使用 jQuery,那我再補充一下原因:- 大多數人用 jQuery 只用幾個功能,而原生 JS、ES6 都可以把這幾個功能實現好
- $("____") =&> document.querySelectorAll("____")
- each / map / reduce / ... =&> Array.prototype.____
- .click / .mouseenter =&> .addEventListener
- deferred =&> Promise
- $.ajax / $.post / $.get =&> 各種其他解決方案
- You-Dont-Need-jQuery: Examples of how to do query, style, dom, ajax, event etc like jQuery with plain javascript.
- 網站前端業務複雜,因此用了 Vue.js 實現,因此 DOM 數據渲染部分完全解決
- 我們不兼容 IE9 以下瀏覽器,??????
- 用 jQuery 實現的插件代碼質量一般都不好(包括 5000+ star 的),用 Vue 重寫一遍不難
沒有用angular 用的是Vue
沒有完全棄用 勉強所說看法---------------Vue 是數據驅動的MVVM 框架 我的邏輯,操作數據就好了,View(DOM)會隨著數據變化而變化,操作數據,維護數據多簡單,DOM操作,好像沒用到ajax 用fetch 就好了能用ES6的地方用ES6。 ES6 不夠 魯大師(lodash)來湊 。
---------------沒有完全棄用是因為,1 高密度操作DOM的還是得Jquery 絢麗輪播圖什麼的 2 雖然一直灌輸數據驅動,但是團隊小夥伴水平不一 還是Jquery 手順。做為領頭人還不能把小夥伴掰彎,怪我。。。稀土團隊是禁用插件的,我來邀請明明,嘉文吧雖然我們在用React,Angular,但是我們還在用jQuery,畢竟jQuery生態不是一般的好。
應該說結合使用,我們用的是vue,已經基本不操作dom了,某些情況,比如組件或者插件,沒有更順手或時間緊迫,你不得不承認jquery的歷史進程中產生了大量可復用且好用的輪子,我們自然而然就選擇了
一定要明確:你是解決問題的,用更好更合適的技術手段解決問題,而不是鑽牛角尖瀉藥
私以為軟體工程的發展如果不是為了解決開發效率的問題,那都是在玩概念瞎忽悠
前端自不例外
新框架新技術無非就是為了更好更快的解決問題,即提高開發效率
開發效率包括後期維護成本、多人協作成本、系統拓展成本等,不只是你敲鍵盤的時間
「xxx我用的熟切到xxx只會降低我的開發效率」的言論就不要出現了
當時我司選擇切到angular自然也是出於提升開發效率的考慮
至於性能,除非移動端,你在js層寫出性能問題其實也蠻不容易的,相信我即便出現了也通常不是angular的鍋。當然你說angular在out of box這一點上做的不夠好這我也是同意的
以上我們團隊不用 jQuery ,也沒有轉向 Angular ,用高 T 寫的框架,這樣整個代碼更可控。
angular里可以寫jq,jq裡面你寫個ng給我看看?
我們團隊同時使用 React與Jquery
-------------------------------------------------------------------------
當前用React原因: 對於連續性的操作, 要像用App一樣在網頁里操作, React實現起來方便. 我們團隊目前用的是React + React-Router + Redux, 配合起來開發效率較高.--------------------------------------------------------------------------當前用Jquery的原因: 對於局部頁面, 比如信息展示頁, 或只需要用戶查看此頁面, 對其它頁面無訪問或無操作, 此頁面最為頻繁, 如微信中的 Weui, 對於用戶體驗很好, 官方的UI, ?(^?^*)---------------------------------------------------------------------------總結來說:各有利弊, 應該從用戶角度考慮, 而不是單純的技術角度考慮.jQuery不是框架只是個庫而已啊……所以不存在拋不拋棄的問題。ˊ_&>ˋ
先說說自己為什麼要放棄使用jQuery吧,隨著標準的日益統一和設備的性能提升,從技術場景的實現來看,Web應用正變得越來越複雜。jQuery是有一定歷史意義的,而且現在它的發展生態也比較完善。唯一的缺點,是它的的結構並不是太合理,它的生態參差不齊,實現的方式各有不同。而且,它所提供的功能,在某種程度上來看,都出現了更好的替代品。
$符號來篩選獲取元素對象,而現在大部分瀏覽器都支持了querySelector。它的工具函數庫,也有了lodash來代替。它的動畫處理,有animate.css。它的網路請求,也出現了fetch Api。當我們發現隨著應用的日益複雜,滿屏的$符號,特別是各式各樣靈活的寫法,是極其難以維護的。於是,有了框架。框架,在一定的層面上,通過編程風格,生命周期的方式來統一了寫法,提高了健壯和維護的可能性。
當你開始使用框架時,你發現這些框架都存在著幫助你處理DOM,事件的API,這時候jQuery最大的優勢反而有些雞肋。因為你再也用到$符號來獲取DOM對象,on來監聽事件。於是,你滿滿轉身,離開了jQuery的懷抱。用React啊完全不需要jQuery了有一個項目就是為了拋棄jQuery而生GitHub - oneuijs/You-Dont-Need-jQuery: Examples of how to do query, style, dom, ajax, event etc like jQuery with plain javascript.前端真的可以不需要jQuery了雖然jQuery是21世紀最偉大的發明之一
jq在dom api中整合的差不多了。angular裡面包含了一部分。
用react。
jq的項目太臃腫,看著費勁,理解費勁
數據交互又多,jq真心累
開發效率低,想玩點高級的,反正剛好打算重構,多方面結合下……
你問我為啥不上vue?
看情況,根據不同項目做不同對待。遺留項目會維持原框架,任何改動要求以不降低可讀性為標準。活躍項目會更新框架。一般會進行技術選型,如果發現新技術更適合目前項目則會進行更新。此外,框架是皮,修鍊技術更重要。代碼如果寫的不好,那用新框架也只能一團糟。反過來,代碼封裝的好,換框架也會減少很多阻力。
實話實說,個人看來jq最大的特點在於瀏覽器(特別萬惡無恥的ie系列)和簡單清晰的API,這兩點也決定了它就算人氣下滑也會是每個前端入門必學庫。
然後隨著你能力眼界提升跟公司項目規模變大,你會投身進熱門的框架學習使用。1,現在的趨勢是慢慢淘汰低版本瀏覽器兼容,一是費時費力,二是互聯網公司都是往前發展的,如果一個用戶還是玩那些瀏覽器的,我估計他也不會是你們的目標用戶吧。
2,jq的特性決定了他沒有固定的開發代碼模式跟加大可持續開發難度,那些接手前任爛攤子的人應該都知道有多噁心,一動不敢動。
3,jq就是先獲取對象操作對象,本身沒有什麼特出的性能,效率方面只能說一般?
這些都是基於個人經驗比較出的,應該也是現在推動各種框架層出不窮的原因吧Js 原生愈發的強大 但是無疑jq仍是目前敏捷開發的首選庫 還有你們不要拿庫和框架比好不好
jquery是lib,不是框架
我就沒用過jquery 一直是YUI死忠。。。
ng本身就帶一個精簡版的jq,而且ng已經封裝那麼多東西了,就不需要jq了,我感覺jq里除了ajax,其他的直接用js來寫也挺方便吧,反正用到的頻率不高,直接寫js就好。
技術就是用來解決問題的, jQuery 可以配合 backbone 把兼容性care的很好。ag能行么?
做產品得從用戶群入手,如果你不考慮 ie9 以下的瀏覽器隨便你怎麼玩
哦。忘了說,目前過內的 Windows 操作系統,市面上屌絲裝機主流都是ghost版的win7 , 禁用了升級,所以自帶是IE8,一般用戶是不懂得怎麼開啟Update服務(默認是被禁用)的。 所以你說拋棄IE6 還行,IE8? 天貓都沒說不兼容,你敢么?
要真正拋棄掉 IE8 - ,可能還需要2年左右的時間。 還有,現在炒股票金融一類,很多都是一些老油條,用ie6 ie8 的也很多, 你看看雪球網,還不是兼容ie8. 道理很明顯推薦閱讀:
※為什麼我引用bootstrap的font-awesome的圖標不出來,就單單是一個HTML裡面引用的?
※如何評價 Google 發布的前端框架 Material Design Lite?
※Bootstrap 框架有哪些缺點?
※有哪些類似bootstrap的純css框架?
TAG:JavaScript | jQuery | BootstrapTwitter | AngularJS | Vuejs |