Vue、React、Angular三大框架對比與使用心得

2022-01-05 若安擇晴
前言

工作快一年多的時間,最近有空就學習了React框架,到此為止,三大框架擼了前面兩個,至於說為什麼不繼續學習Angular,那是因為在國內來說,使用Angular框架的公司真不多,並且入手成本比較高,所以說學習的意義不大。不敢說能夠熟練使用框架,但是也是有了一些使用和選型心得了,在此嘗試細說三大框架的優點以區別,加深自己理解的同時,幫助大家快速搞定技術選型。

首先來說一下三大框架的使用情況,Vue使用得最多,其次是React,Angular排在最後,讓我們看看從大佬那裡copy過來的三大框架的使用情況:

Vue:餓了麼、愛奇藝、中國平安H5、簡書、途虎養車、小紅書、樂視商城、手機搜狐、優酷、土豆、掘金、微博H5、大麥網H5、唯品會H5、小米商城H5、芒果TV移動版、嗶哩嗶哩、又拍雲、七麥數據、OneAPM、阿拉丁小程序統計、網易雲信+手機網易+網易郵箱H5登錄頁、今日頭條+西瓜視頻網頁版、貝店(APP內嵌H5)、大搜車、滴滴開源、高德開放平臺、京東拼購+領券+新人頻道H5+京東雲、瓜子二手車H5、土巴兔、分期樂、BITMAIN、小豬短租H5、IT桔子、創業邦H5、拍拍貸、極客邦科技+極客時間、開源中國、少數派、藍湖、百度指數、微信公眾平臺、大魚號(UC雲觀)、創客貼、兌吧、國美電器H5、聚美優品觸屏版、錢咖、試客小兵、賺客、雪球財經、電玩巴士、Hao123觸屏版、彈個車、攜程H5多個模塊、窮遊網、一加手機...

React:螞蟻數據可視化、愛彼迎、飛豬、阿里大於、蝦米音樂、口碑開放平臺、貓途鷹、喜馬拉雅、鬥魚、知乎、豆瓣、美團外賣H5、房多多、石墨文檔、墨刀、TalkingData、xiaopiu、Teambition、Uber、倍洽、同盾科技、心知天氣、拼多多(APP內嵌H5)、滴滴出行、Sentry、途牛、優酷、京東服飾+生鮮+旅行+賺錢H5、瓜子金融H5、算力矩陣、鏈家H5、阿里雲管理後臺、Coding、CodePen、樹莓派、36氪、Notion、GoDaddy、站酷海洛、Plotly、麥客CRM、特贊營銷日曆、鹿班、網易雲閱讀PC端+網易雲音樂H5、獵聘網、看雲文檔編輯頁、NIKE官網、丁香醫生、去哪兒H5多個模塊、藝龍H5個別模塊、租租車H5、汽車之家車商城、PayPal中國、Pocket、友盟、iH5...

AngularJS:百度腦圖、eolinker、海致BDP、極光、Worktile、錘子科技官網、微信網頁版、iTunes Connect、阿里雲管理後臺、鯨準對接平臺...

從上面的數據清晰可見,Vue React 旗鼓相當,但是Angular著實有點慘澹,接下來說一下三大框架的優缺點

框架之競

首先我來談談個人的看法,三大框架都是好框架,每一個框架的出現都有著他的使命和應用場景,就好比後端工程師們常常探討的誰是最好的語言一樣,一句『『PHP是世上最好的語言』』,由此引發了他們的口水之戰。由於我接觸的第一個項目就是使用Vue寫的,所以也就喜歡上了Vue這個框架,覺得他的響應式寫法,組件化編程,挺方便,挺好用的,但學習了React後,發現React 更靈活的寫法,處處都能秀的最佳實踐,以及更多的選擇所帶來的新鮮感,連一個css 都能給玩出花來。至於Angualr,從官網看到發現他又大又全的能力,更好的工程化,強制性分層、依賴注入,以及ts天然的代碼檢查能力,覺得也是蠻香的,那麼究竟誰是最好的前端框架呢?

答案是沒有最好的框架,在時間、人員、經驗、維護性等等方面綜合考慮後,選定一個框架來實現項目,那麼這個框架對於這個項目來說就是最好的框架。框架只是一個工具,能夠幫助我們快速的構建代碼,但最後項目的交付還是需要我們前端工程師來實現。

三大框架特點Vue(漸進式框架)

先來說說我第一個接觸的框架Vue,可能現在是前端工程師用得最多的框架了.因為他上手快、簡單易學、易招人等等,所以大多數的中小公司的項目都選擇了以Vue來開發.

用於開發用戶界面和單頁 Web 應用,Vue 是一個開源的 Model-View-View-Model (MVVM) 前端 JavaScript 庫。它被稱為漸進式框架,與其它工具一起被用於前端開發。Vue 的多用途、高性能和它在 Web 應用程式上的最佳用戶體驗成就了它的流行。

1.響應式

響應式的系統是很方便於開發者的,每個屬性的變化都可以通過Watcher來進行監聽,從而更新到虛擬DOM上.


2.模板語法

在Vue中所有的數據展示均以雙花括號的形式進行展示


Vue模板並不是html,那麼為什麼會顯示在頁面上面呢? 其實在vue 中使用的就是vue-template-compiler這個模板編譯工具, 那這個工具做了什麼呢? 就是將 Vue 2.0 模板預編譯為渲染函數(template => ast => render)


3.實現MVVM

用數據去驅動視圖,簡化繁雜的操作DOM,關注業務邏輯,節省開發時間.

ViewModel是個什麼玩意? 他是一個抽象的東西,在Vue中,ViewModel就好比是我們的方法,我們的事件,等等,在這一層,幫助我們改變了數據、視圖,是一個承上啟下的作用,這也就是Vue經典的數據雙向綁定.


4.上手簡單、只需關注業務邏輯

這是Vue最為亮眼的一點,比起React的jsx,比起Angular的rxjs,以及各種依賴注入Vue 的語法風格,和使用api相當友好.相比起React和Angular Vue在按照模板格式開發時就沒有太多限制,得益於響應式系統,也不用去做相對應的性能優化,由於Vue 內部的模板語法,能在開發環境下編譯,這樣就能在編譯的時候去做一些性能優化

React(UI庫)

React 是一個開源的前端庫,主要用於開發用戶界面。React 是基於 JavaScript 的,但在大多數情況下,它與 JSX(JavaScript XML)相結合。


1.函數式編程,不可變值設計

在React中性能優化的權利交給了開發者,默認情況是當父組件更新後對應的子組件就會進行更新.這樣開發者就需要做一些優化的手段.我們知道 ShouldComponentUpdate(SCU)可以用來阻斷更新的蔓延。但是React組件默認並沒有實現它,因而需要開發者來判斷是否需要對應用進行性能優化。檢測到組件的state和props有沒有發生改變,沒發生變化的話將一直返回false.這個組件以及他所對應的子組件都不會被渲染.


2.all in js

在React中,所有的一切都是js,沒有Vue中各種模板語法的限制,編寫自由度高,他注重更更大的顆粒度拆分,推重組件化的設計思想,在react 中一切皆是組件,一個大型的項目都是有一個個組件仿佛積木一般堆積而成.


3.社區活躍度高,生態繁榮

在React社區中,你很清楚你需要做什麼,對於同一種問題,在社區中,你總能找到好幾種解決方案,比如在公共數據狀態管理就有redux,mobx,還有最近出來的concent 的也是讓人耳目一新,比如css 也是不可開交,前有sass,less,後又css in js 的style-components,總是有著新的輪子出來,所以說有選擇困難症的,在React中恐怕是不太好選擇了.


4.多端跨平臺實現

由於RN的加持,搞定react的語法之後,你甚至就可以去手擼一個app,這裡vue 是做不到的 ,也正是因為這樣,你會發現,在react 中的事件是自己寫的,而不是用的瀏覽器原生的,就是因為他需要用自己寫的這一套合成事件的機制來實現跨端事件,原理其實很簡單


5.Fiber(時間分片)

react16中新增了Fiber(時間分片),這種渲染機制,他將Reconcilation階段的人物分成一個個執行單元,也就是所謂的fiber,然後利用requestIdleCallback這個方法去在主進程空閒的狀態下執行一個個fiber,原理如下:

                                                    .

如此一來,大致解決了由於react渲染時由於diff計算過長佔用主進程所帶來的卡頓,以及掉幀問題。

Angular(成熟的前端框架)

由於沒有做過Angular的項目,我只能是從別人的經驗和分享以及官網那裡搬點過來列舉了.

Angular 框架屬於 MEAN 框架,是如今創業公司最熱門的技術棧。Angular 是一個完整的基於 TypeScript 的 Web 應用開發框架,主要用於構建單頁 Web 應用(SPA)

說angular 又大又全,是因為,他不需要藉助社區的力量,僅僅靠自己就能實現一個產品從開始到上線的解決方案,比如,他提供完備的單元測試方案,這裡你在新建組件的時候都會給你一個測試的ts,在比如,他會提供開發時所需的所有服務,比如http服務,比如router服務,比如公共數據管理服務service,這些angular 全部完備,他更像是一個後端語言,嚴格的類型檢查,擁抱ts,強制性分層,以及更好的工程,面向對象編程的思想。angular很高大全同時也很複雜,angular官方庫給了你一切你想要的,使用angular技術棧,基本上你不用對組件選型浪費太多時間精力(對比react)。

三大框架的區別和聯繫聯繫

1.組件化

三大框架,都是組件化的框架.當你在任意一個框架中學會了組件化的思想後,那麼你就可以用同樣的方法去學習另外兩個框架,都是相同的學習思想.

2.數據驅動視圖

三大框架都是以數據變化去改變視圖,所以說只需要關注於數據的變化即可.雖然說形式不同,但是數據驅動視圖的思想是不變的.都是通過直接或間接的賦值,從而改變視圖的變化.


3. 相同的開發思想

三大框架都遵循著組件化的思想,有著相同的開發套路,只是在使用形式上有著細微的差別,當你學會其中一種框架後,其他的兩種框架,也就迎刃而解了.

區別


1.模板 vs JSX

React與Vue、Angualr最大的不同就是模板的編寫. 在Vue和Angular中,寫法接近於標準的html,而在React中,是一種獨特的JSX語法,本質上都是一個語法糖,編譯之後都是可以執行的函數.


2.虛擬DOM vs Incremental DOM

底層渲染數據方面,Vue和React都是使用的虛擬DOM 的形式,而Angular使用的是Incremental DOM.進一步了解Angular Ivy: Incremental DOM 和 Virtual DOM


3.函數式編程、聲明式編程

在react中不可變值貫穿整個框架,如果你要改變數據,那麼必須調用api去改,這就是函數式編程的思想,而在vue,和angualr中,聲明式編程的思想也深入人心,既方便有快捷。這種直接賦值的方式,和用api賦值的方式,其實,只是用法不同而已,本質還是數據驅動.

4.社區活躍度

在Vue和Angular社區中,你所想要的,都能夠找到,而在React 中更多的是需要你自己去實現,因為可以選擇的是在是太多了.

5.新手入門

Angular 工程化最好的框架,,也是由於擁抱rxjs,和ts,也是最難的框架

React 上手也也比較簡單,尤其是16引入hooks之後,號稱api終結者,但是由於社區太過活躍各種新東西層出不窮,中文文檔晦澀難懂,導致相對於vue上手也有難度

Vue由於是中國人寫的,有著完善的中文文檔,和穩定的社區,並且有著親切的模板語法,應當說是入門相對來說是最簡單的了。

最後,在國內來說,掌握Vue和React就可以了,至於說Angular,國內真的很少有公司用,一般的公司,在考慮時間,成本等等綜合因素後,選擇Vue和React居多.所以說,如果你是一個前端工程師,最先應該掌握這兩個框架,然後去找工作,可能會更得心應手.說了這麼多,但感覺總結的都是些框架的基礎和特點,沒有深入講解.也算是我用了這些框架後的一點小小的心得體會,希望能夠對剛學的你有所幫助. 

相關焦點

  • 分享vue angular react三大框架實戰課程
    我剛好有《vue angular react三大框架實戰課程》這個課程想要分享給你請加微信:jojoboy020或QQ:694579664(小君老師)領取《 分享vue angular react三大框架實戰課程》
  • 三個JavaScript框架重量級:Angular,React和Vue
    你可能知道這三個JavaScript框架重量級,但哪一個是正確的?嘗試查看使用每個框架構建的相同應用程式並進行自己的評估。在這篇文章中,我們提出了一個使用三種不同框架開發三次的開源參考應用程式:React,Vue和Angular。
  • Angular vs React vs Vue:2021年,應該選擇哪個框架
    reactjs.orgvuejs.org當前版本1117.x3.0.x使用者谷歌、維克斯臉書、優步阿里巴巴、GitLab在使用開源框架之前,請確保通過其許可。有趣的是,所有三個框架都使用MIT 許可證,它對重用提供了有限的限制,即使在專有軟體中也是如此。在使用任何框架或軟體之前,請確保您了解許可證的含義。由於「angular」和「react」是常用詞,因此很難從谷歌趨勢中掌握它們的流行程度。儘管如此,他們受歡迎程度的一個很好的指標是他們的 GitHub 代碼庫獲得的星數。
  • React、Angular和Vue三種最流行的前端框架哪一個最好?
    庫或框架?因此,在深入比較之前,我們首先需要確定哪一個是必需的 - 一個庫或一個框架?實際上,庫被設計來執行一些特定的任務,而且通常並不複雜。因此,如果我們使用庫來構建我們的應用程式,那麼我們需要為每個任務選擇一個庫,以及設置任務運行者。庫的主要優點是我們可以完全控制應用程式。
  • Vue、React、Angular之三國殺,web前端入坑第六篇(上)
    vue、react、angular對比和選擇 這個話題我在vue1.x 時代 2016年 就想寫了,可時光如梭,懶癌侵身,一個擱淺便是這麼多天。vue都2.5了,angular 都變成了另外一種框架了,不敢想,不敢想, JavaScript 開發框架發展的是如此之快。如果有不知道mvvm概念的同學,請先回顧我 入坑第五篇: 秒懂前端框架歷史和MVVM框架原理!
  • 前端框架VUE,理解這一點,快速成為大咖
    前端三大框架angular、react、vue,然而vue是集中之一,框架難易程度就是angular大於react大於vue。只要你會前端三大框架之一和後端Java開發,你就成為了全棧開發工程師。框架只學精一個就行,其他的都是相通的,正如程式語言一樣,通一門則掌握其他任何程式語言。
  • Vue、React和Angular:該選擇哪個框架?
    作者 | InVerita 譯者 | Sambodhi 策劃 | 蔡芳芳 本文對三個最流行的 JavaScript 框架進行了全面的比較:Vue、React 和 Angular,如果你是正在開發或者目前正在考慮使用這些流行框架之一來啟動項目的開發人員
  • Vue、React 和 Angular:該選擇哪個框架?
    本文對三個最流行的 JavaScript 框架進行了全面的比較:Vue、React 和 Angular,如果你是正在開發或者目前正在考慮使用這些流行框架之一來啟動項目的開發人員,我們希望本文對你選擇正確的解決方案能有所幫助。
  • ​Handsontable11.0.0:React、Angular和Vue的模塊化
    自從Handsontable8.3.0以來,你已經能夠在Handsontable的vanillaJavaScript版本中使用模塊。現在,你也可以在Handsontable的每個框架版本(React、Angular和Vue)中使用模塊。
  • 前端框架Vue、angular、React大PK
    學習web前端開發中,會有很多的框架,那麼目前流行的框架有哪些呢?截止2019年3月,Vue在Github上的star數達13萬,在BAT等大廠應用普遍。在三大框架中,Vue的中文文檔最為完善,精通Vue的前端工程師平均薪酬高達24820元/月,比初中級前端高27%。(數據源於職友集)1. 簡單:官方文檔很清晰,比 Angular 簡單易學。
  • Angular、React、Vue,誰能成為2021年JavaScript最佳框架?
    下面這張圖就是我從那裡找到的,顯示了用戶的反應,例如他們是否會再次使用該框架與是否知道這項技術等等。>選擇React的理由圖源: https://2019.stateofjs.com/front-end-frameworks/react/
  • Vue.js 作者回應『Angular有哪些地方比Vue更優秀?』
    最近 @大漠窮秋 發布了一篇對比 Angular 和 Vue 的文章。框架之間的對比雖然是老生常談,但也確實是繞不過去的話題,Vue 本身的文檔裡也直接就有和其他框架的對比。同為開源的技術方案,比較本身其實沒有任何問題,但在寫 Vue 與其他框架的比較的時候,我們盡力做到兩點:確保事實的準確性。有的就是有,沒有就是沒有,不確定的就不說,弄錯了一定改。
  • 前端諸神大戰,Vue、React 依舊笑傲江湖
    本文將從如下幾個方面比較三個框架,希望能助你一臂之力。基本比較基本信息:各個框架的優缺點React 由 Facebook 開發,第一版發布於 2013 年。Facebook 在自己的產品中大量使用了 React(如 Facebook、Instagram、WhatsApp 等)。目前穩定版本為 16.x,發布於 2018 年 11 月。
  • React 長期以來的「歷史主導地位」如何慢慢被暴漲的 Vue 所超越
    對Facebook推出的React仰慕已久,一直沒有找到合適的機會嘗試,而react早已經是最熱門的前端框架,coding.net的WebIDE,墨刀的web原型設計應用,都是非常成熟的react應用;最近正好前後端都有很多想法,周末花一天時間折騰了一翻,順利的完成入門訓練。
  • 前端技術:React&Vue對比
    React和vue的業務邏輯是差不多,vue在react上封裝了更簡潔的方法,使用起來更加的便捷,如:提供了便捷的指令(v-for,v-if,v-model),還提供了更多的屬性(computed,watch),我還是比較喜歡用react的,更接近js原生,更容易於理解它。
  • Angular、React、Vue.js 等 6 大主流前端框架都有什麼優缺點?
    當我們開始寫這個系列博客的時候,我們知道 JavaScript/Web 應用框架並不太好總結。我們努力對這個不可回答的問題作出回答:我該用什麼樣的框架?在這篇文章中,我們將對這個系列中所提到的每款框架做一個總結,包括我們所認為的強項和弱項。另外,我們為你留下了一些值得思考的問題。我是否需要使用框架?
  • 前端神器:一行命令,React 組件轉 Vue 組件!
    而基本react component的定義更多是基於props和state來渲染的組件,其中也可以包括發請求。本文先介紹兩個框架的組件共性和不兼容的地方,再介紹react-to-vue的使用和原理。在實際業務中,陸金所100多個的react基礎業務組件,react-to-vue可以轉化90%以上,變成vue組件。
  • 前端三大框架-vuejs之父尤雨溪
    我們都知道目前前端有三個非常流行的框架,非別是angularjs,reactjs,vuejs。而這三個當中,vuejs的受歡迎度目前是最高的,而開發vuejs的就是一個中國人尤雨溪。順利進入谷歌之後,尤雨溪主要從事的是原型設計,當時他主要使用的是angular,但是他發現angular雖然有數據綁定等好方法,但是它過於臃腫,於是他想自己寫一個好用的腳手架,於是vuejs誕生了。可以說vuejs最初的版本借鑑了很多angular的思想。
  • JavaScript 框架對比及案例(React、Vue 及 Hyperapp) | Linux 中國
    Hyperapp 使用 ES6 的雙箭頭語法來實現這個方法,而據我所知,這是唯一一個推薦使用這種語法的框架,React 和 Vue 需要在它們的方法內使用 this。另一方面,Hyperapp 的方法需要將狀態作為參數,這意味著可以在不同的上下文中重用它們。◈ 這三個框架的渲染部分實際上是相同的。
  • 8分鐘為你詳解React、Angular、Vue三大前端技術
    為了支持React的單向數據流的概念(與AngularJS/Angular的雙向數據流形成對比),Flux架構是流行的模型-視圖-控制器(MVC)架構的具有代表性的替代方案。Flux的特點是,數據動作通過中央調度器發送到一個存儲倉庫,而對存儲倉庫數據的變化會被傳送回視圖。當與React一起使用時,這種傳送是通過組件屬性完成的。