對於開發人員而言,選擇技術棧有時是一件相當棘手的任務。因為您需要綜合考慮諸如:預算、時間、應用大小、終端使用者、專案目標、以及可用資源等多方面因素。

無論您是初學者、開發人員、自由職業者還是專案架構師,只有詳細瞭解了每種框架的優、缺點,才能做出明智的決定。因此,本文不會簡單地幫您選擇出所謂最好的框架,而是完全由您的專案範圍和框架適用性,來決定自己的選擇結果。當然,本文旨在幫助您更好地理解每一種框架的特點及其趨勢。

讓我們開始吧

首先讓我們看看來自於Google趨勢的有關React、Angular和Vue.js的對比。

就過去一年的情況而言,Angular排名第一,React名列其後,而Vue.js所佔份額則最少。

在這裡插入圖片描述

React、Angular與Vue的對比

下面這些問題有助於您更好地理解這些框架特點: •它們是否成熟並適合構建可擴充套件的應用程式? •是否容易找到或招募到每種框架的開發人員? •您知道這裡所列的每種框架其背後的核心概念嗎? •您是否分析過每種框架的效能、速度和學習曲線? •是否有何種工具可以使用這些庫,來開發應用程式?

下面讓我們來逐一回答上述問題。

每種框架的發展歷史

React是為Web應用構建不同的UI元件所提供的JavaScript庫。它由Facebook進行維護,許多諸如Uber、Netflix、Twitter、Udemy、Paypal、Reddit、Tumblr和Walmart等知名企業都在他們的開發環境中使用到了React。

React Native是Facebook投資研發的另一款框架,它利用JavaScript和React來構建原生的移動應用。由於其各種突出的特點和功能,許多知名公司都已轉用React來進行開發。在網上,雖然React與Vue.js之爭喋喋不休,但同時也給了我們許多選擇最好框架方面的借鑑。

Angular是一種由Google支援的、基於TypeScript(一種由微軟開發的自由和開源的程式語言)的JavaScript框架,同時也是一種非常受前端開發者歡迎的框架。其中Angular和Angular2都是在AngularJS(框架的第一個版本)的基礎上重寫而來。

Angular在全球開發者中廣受歡迎,其組織類使用者包括Google、Forbes、WhatsApp、Instagram和healthcare.gov等財富500強企業。

Vue.js是如今經常被討論到的、且快速增長的JavaScript框架之一。其作者是Google的前僱員Evan You。他在Google供職期間曾從事過Angular的研發。Vue.js使用HTML、CSS和JavaScript來構建出各種酷炫的使用者介面(UI)。Alibaba、GitLab和Baidu都在使用Vue.js,同時它也被全球眾多開發者與設計師所推崇。

流行與市場趨勢

根據Stackoverflow(一個與程式相關的IT技術問答網站)2017年的調查,51.7%的開發者喜歡Angular,而66.9%的受訪者則喜歡用React。可見,在前端框架領域,React和Angular有著幾乎相同的使用者歡迎度。雖然Vue在此領域尚無一席之地,但它絕對有實力參與這場“戰鬥”。

下面,再來看看GitHub對此三種框架的星級統計。

GitHub的該圖表顯示在開發人員中,Vue的普及程度超過了Angular和React。目前,Vue有108086顆星,React有106807顆星,而Angular則有38654顆星。

因此,單從統計數字而言,Vue.js可謂是一枝獨秀,其良好且易用的架構,足以吸引各類開發者的眼球。

當然,Angular和React仍擁有著眾多行業內的大牌企業使用者。Google在其許多專案中都使用到了Angular;而Facebook、Airbnb、Dropbox、WhatsApp和Netflix則在它們的開發環境中使用的是React。

社群支援和增長

由於Facebook支援著React,而Google支援著Angular,因此這兩種框架的增長是毋庸置疑的。它們能夠持續得到更新與釋出,在碰到遷移時也有著很好的維護與支援。React和Angular的開發人員都聲稱:升級不是問題,他們會每六個月釋出一次主要更新。

從這個角度來看,雖然Vue.js也可以通過一個遷移輔助工具,來輕鬆實現遷移。但是就一款大型應用而言,它可能面臨的問題是:缺少專注於版本控制與計劃的路線圖。

另外,由於Angular是一個完備的框架,而React是一組更獨立、更快捷、且不斷改進的庫,因此React比Angular更靈活。不過,您也必須關注那些可能不再被支援或維護的小模組。

容易找到開發人員嗎?

由於React更多地涉及到了JavaScript,因此人們有時會傾向於選擇Angular或Vue。畢竟HTML更為普及,而React使用的是不同的JSX(JavaScript XML)語法。雖然,它並不要求在應用中使用JSX,但您必須熟悉React的設定、環境和架構。

在這種情況下,Angular就是一種不錯的選擇。您可以輕鬆地在市場上找到Angular開發人員。同時Angular擁有著大量的專案、更新和資源社群,並且能夠持續下去。

您喜歡JSX還是HTML?

這是一個無休止的爭論。Angular使用的是HTML,而React則使用著JavaScript。請記住,這三種框架都是基於元件的。您可以跨應用去按需重用元件。根據官方檔案,JSX 既不是字串,也並非HTML。它允許開發人員建立React元素,同時它是JavaScript的一種語法擴充套件。

使用React的優點在於JavaScript比HTML更強大,它是一種為前端開發定製的、相當易於維護的成熟語言。不同於另兩種框架,Vue更關注點分離(Separation of Concerns,SoF),開發人員能夠用它來順次編寫樣式、指令碼和其他內容。因此,它更適合於那些初學者、設計師、和熟悉HTML的,經驗豐富的開發人員。

注:通過Babel外掛,您可以在Vue中使用JSX。

框架與庫的區別

Angular是一種框架,它為建立完整的安裝應用程式提供了一個良好的開始。您不必檢視各種庫、路由方案和其具體結構,就能快速地開始構建。而在另一方面,React和Vue卻比Angular更具靈活性和普遍性。

運用React,您可以實現配對、交換等多種整合方式,也可以將各種庫與其他外部工具進行整合。可見,React的靈活性實現了開箱即用(out of the box)式的無縫整合。不過也正是因為該特點,React錯誤的機率、以及依賴項也就更多。

相對而言,Vue是最純淨的框架。它通過內部依賴性、和靈活性的完美平衡,有助於提高您的程式碼效率。它是一種旨在簡化Web開發的非常簡單、且直接易用的JavaScript框架。

其他需要考慮的重要方面

Angular會涉及到依賴注入(Dependency Injection),即一個物件為另一個物件提供各種依賴。這將使得程式碼能夠更加簡潔,更加易懂。另一方面,Angular是基於MVC架構的,而MVC模式會將專案拆分成模型、檢視和控制器三種不同的元件。不過,React並沒有此類概念,它只被用於為應用程式構建檢視。

效能方面,哪個更好?

React和Vue都具有虛擬文件物件模型(Virtual DOM),而Virtual DOM有著效能方面的優勢。憑藉著良好的結構,Vue在效能和記憶體分配方面表現不俗。React緊隨其後,而Angular則此局勝出。

由於效能取決於各種因素,這裡的三種框架實際上已經比其他JavaScript框架要快得多了。因此,鑑於應用程式本身的大小和程式碼的優化程度不同,您不應該僅從效能方面下結論。

原生應用程式的開發

一般原生應用程式是為某個特定平臺所構建的。您可以使用React Native為iOS和Android開發原生應用。而Angular的NativeScript已被原生應用所採用,特別是Ionic框架已經被廣泛地運用在製作混合應用等方面。

不過,Vue的Weex平臺正在開發之中,而且目前看來尚無下一步使之成為全面跨平臺的計劃。

哪個平臺提供了簡單的學習曲線?

Angular和React都有著自己的一套處理方式,而Vue則相對簡單一些。這也就是為什麼許多公司都轉向Vue的原因。在使用Angular或React進行開發前,我們需要具有紮實的JavaScript知識,而且經常需要對第三方庫做出選擇。

如果您的應用程式體積較大,在Vue中涉及到了大量程式碼的話,那麼不僅是編碼,包括除錯和測試都可能會碰到,由於在其中使用了老式的JavaScript實現方式所帶來的問題。

另外,Angular能夠提供相當翔實且清晰的錯誤資訊,以幫助開發人員解決各種問題。

單向資料流與雙向資料繫結

雙向資料繫結是指將UI欄位動態地繫結到模型上的一種機制。當UI的各種元素髮生變更時,其模型資料將相應地發生變化。另一方面,單向資料流則意味著只有單一的資料來源–模型。應用程式的資料遵循同一方向流動,只有模型才能更改應用程式的狀態。這是React和Angular的主要區別之一。

顯然,單向資料流不但易於理解,而且具有確定性;而由於雙向資料繫結的複雜性,它不但難以被理解,而且在實現上也有一定的困難。

因此在此方面,Angular使用的是雙向資料繫結,React用的是單資料流的,而Vue則支援兩者。此處重點在於:Angular的雙向方法提供了高效的編碼結構,從而方便了開發人員的發現和使用。而React針對資料的單向管理,提供了更好的概述和理解。

微應用和微服務的興起

目前,微應用和微服務技術正方興未艾。React和Vue的靈活選擇性,對於應用程式來說是非常重要的。在React和Vue環境中,您只需要將各種庫新增到原始碼之中便可。

由於Angular使用的是TypeScript,因此它更適合於單頁Web應用(single page web application,SPA),而非微服務。相反,React和Vue的靈活性更適合微應用和微服務的開發。

最後應該如何選擇?

如果您追求靈活性勝過功能性的話,請使用React。

如果您喜歡在編碼中使用TypeScript的話,請使用Angular。

如果您是個JavaScript愛好者的話,請根據JavaScript來選擇使用React。

如果您是個整潔的程式碼控,請在應用程式中使用Vue。

Vue提供了最簡單的學習曲線,因此它是初學者的理想選擇。

如果您想在應用程式中關注點分離(Separation of Concerns),請使用Vue。

如果您喜歡面向物件的程式設計,那麼Angular絕對是您的最佳選擇。

另外,Vue往往是一些小團隊和小專案的理想選擇。如果您的應用程式體積較大,而且有著未來的擴充套件計劃,那麼請選擇React或Angular。

對於跨平臺應用程式的開發而言,React Native是個不錯的選擇,因為它提供了各種現代化的功能,您可以輕鬆地找到對應的資源。而對於Angular來說,您需要擁有對 於JavaScript的全面知識,以構建出各種大規模的應用。

React、Angular、Vue.js的比較速覽

綜上所述,我們在不偏向任何一種框架的前提條件下,向您展示了三種框架的對比,相信總有一款能夠滿足您的要求。如果我們在文中遺漏了任何要點或概念,請在下方通過留言和評論的方式告訴我們。謝謝! 對web開發技術感興趣的同學,歡迎加入Q群:866109386,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊檔案資料。 最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。