前端框架之爭丨除了Vue、Angular和React還有誰與之爭鋒
當(dāng)今涌出的大量框架讓人眼花繚亂不知如何選擇,今天將比較五個最流行的前端JavaScript框架,并作出概述,介紹其主要功能、工具、學(xué)習(xí)曲線及其他因素,幫助您做出衡量和選擇。
人氣衡量標(biāo)準(zhǔn)
據(jù)2020年JavaScript調(diào)查狀況通過框架使用情況確定框架流行程度。調(diào)查由23,765名受訪者完成,結(jié)果如下:
- React:80%
- Angular:56%
- Vue.js:49%
- Svelte:15%
- PreACT:13%
此外還考慮了同一項調(diào)查中的“框架意識”:
- React:100%
- Angular:100%
- Vue.js:99%
- Ember:88%
- Svelte:86%
前端框架的定義
出于本文的目的,文本將使用Martin Fowler提供的定義:
庫本質(zhì)上是開發(fā)者可以調(diào)用的一組函數(shù),通常組織成類。調(diào)用執(zhí)行一些工作,并將控制權(quán)返回給客戶端。
框架體現(xiàn)抽象設(shè)計,內(nèi)置更多行為,開發(fā)者通過子類化或插入自己的類將行為插入到框架中的不同位置使用,框架則調(diào)用這些點的代碼。
1. React
由Facebook于2013年發(fā)布,當(dāng)今最流行的前端框架。應(yīng)用于Facebook,Netflix和Airbnb等公司產(chǎn)品,擁有大量的開發(fā)人員和豐富的使用學(xué)習(xí)資源。
React相關(guān)工具很多,該團(tuán)隊提供的CLI用于便捷搭建一個新項目,工具擴(kuò)展適用于Chrome和Firefox的。包含很多第三方軟件包完成各種各樣的任務(wù)(例如,路由,處理表單和動畫),以及幾個基于React的框架,例如Next.js和Gatsby。
React奉行“一次學(xué)習(xí),隨處編寫”的理念。它可用React Native來為移動應(yīng)用程序提供動力,用 Node在服務(wù)器上進(jìn)行渲染,有出色的SEO支持。
主流思想認(rèn)為React其太簡單:它僅與應(yīng)用程序的視圖層有關(guān),而其都交給了開發(fā)人員,對過高的自由度也褒貶不一。
如果進(jìn)行學(xué)習(xí),學(xué)習(xí)曲線適度。React鼓勵開發(fā)者使用各種函數(shù)式編程范例(例如不變性和純函數(shù)),需要開發(fā)人員在進(jìn)行構(gòu)建前需要對基本概念有基本了解
總體來說,如果你對react的自由度滿意,那么對于任何規(guī)模的數(shù)據(jù)驅(qū)動應(yīng)用程序來說,都是佳選。
2. Angular
作為Google在前端框提供的產(chǎn)品,于10年以AngularJS(或Angular 1)的形式誕生,并立即受到熱捧,主要由于開發(fā)人員能夠構(gòu)建現(xiàn)在稱為單頁應(yīng)用程序的第一個框架。
為解決性能問題和構(gòu)建大型JavaScript應(yīng)用程序的挑戰(zhàn),Google重寫了AngularJS,于16年發(fā)布了Angular 2(如今僅是Angular)。因不能簡單遷移,因此AngularJS和Angular成為兩個獨立的框架。
Angular在前端框架占據(jù)了重要地位,它經(jīng)過嚴(yán)格測試已由Google和Microsoft等公司投入生產(chǎn)使用,相關(guān)線上資源也十分豐富。
不同于react僅處理視圖層,Angular提供了完整的解決方案構(gòu)建單頁客戶端應(yīng)用程序。Angular組件實現(xiàn)雙向數(shù)據(jù)綁定,用以偵聽事件并在父組件和子組件之間同時更新值。模板是HTML的一部分,允許使用特殊語法來利用Angular的許多功能。TypeScript是Angular開發(fā)的主要語言,因此該框架很適合企業(yè)及應(yīng)用。
從相關(guān)工具的角度來說,Angular提供了高度完善的CLI來初始化,開發(fā),構(gòu)建和維護(hù)其應(yīng)用程序,還有Chrome和Firefox Dev Tools擴(kuò)展可用于調(diào)試Angular應(yīng)用程序。
但是從學(xué)習(xí)角度說,Angulard的學(xué)習(xí)曲線最為陡峭。開發(fā)者需熟悉TypeScript才能開展工作,對于新手而言并不是最佳選擇,更適合在團(tuán)隊中發(fā)揮作用。
3. Vue.js
注:統(tǒng)計數(shù)據(jù)適用于Vue v2,版本3可用,須以安裝vue@next。
Vue是一個用于構(gòu)建用戶界面和單頁應(yīng)用程序的模型-視圖-視圖模型(MVVM)前端框架。由Evan You撰寫,并于2014年首次發(fā)布。
Vue現(xiàn)已被阿里巴巴、Gitlab和Adobe等公司用于生產(chǎn)。可以稱它為所有框架中最好的文檔,其論壇是獲得編碼問題幫助的絕佳資源。Vue在PHP界流行且是Laravel框架的一部分。
Vue的核心賣點是從頭開始設(shè)計,可逐步采用,即Vue可增強常規(guī)網(wǎng)頁功能或構(gòu)件完善單頁應(yīng)用,同時Anugular可基于HTML可將屬性綁定到基礎(chǔ)數(shù)據(jù)模型,提供單個文件組件。
從相關(guān)工具的完整程度來講,一方面官方的CLI可以創(chuàng)建腳手架和開發(fā)Vue應(yīng)用程序,此外devtools擴(kuò)展可用于Chrome和Firefox來幫助調(diào)試。不同于React,Vue提供了用于路由和狀態(tài)管理的官方程序包,提供了一種便捷標(biāo)準(zhǔn)化處理方式,同時各種第三方工具和基于Vue的框架。
但與其他框架相比入門門檻很低,適用于經(jīng)驗不足的開發(fā)人員。
4. Svelte
由Rich Harris于16年發(fā)布,作為前端框架新成員,采用不同于其他框架的方法來構(gòu)建Web應(yīng)用程序。
它避開虛擬DOM的概念,在構(gòu)建期間將代碼編譯到小型原始JavaScript模塊中,開發(fā)者的應(yīng)用程序狀態(tài)更改該模塊隨之更新DOM。實現(xiàn)了體積小速度快的應(yīng)用。
Rich Harris的學(xué)習(xí)曲線很低,但社區(qū)規(guī)模小,但是它已被IBM和《紐約時報》等公司用于生產(chǎn),未來很有潛力。
由于其成熟度較低只作為小型項目優(yōu)選,但情況逐漸改變。SvelteKit處于公開測試階段,社區(qū)正在不斷發(fā)展壯大。盡管Svelte目前年幼,但開發(fā)者應(yīng)該注意關(guān)注。
5. Ember.js
最后介紹的Ember,自前端框架問世就已經(jīng)存在。在11年最初發(fā)布,但依舊在開發(fā)界流行:
它的歷史可以追溯到React,Vue,Svelte和其他所有公司之前。該框架從未出現(xiàn)在前端炒作的最前沿,但依舊穩(wěn)步前進(jìn)。合作對象包括Qonto和CLARK,是2020年歐洲前50大金融科技公司中的兩家。
Ember與Angular類似在應(yīng)用程序開發(fā)中采用更多包含電池的方法,并提供構(gòu)建現(xiàn)代前端JavaScript應(yīng)用程序所需的一切。遵循六個星期的發(fā)布周期且穩(wěn)定性極好。
從相關(guān)工具講,相關(guān)工具眾多,從Ember CLI到Ember Inspector,還有許多可用的第三方庫。
其社區(qū)規(guī)模并不比其他流行框架社區(qū),但它的成員參與度高,并且擁有論壇和Discord服務(wù)器,尋求編碼問題的幫助很容易。
如果開發(fā)者要進(jìn)行學(xué)習(xí)的話,學(xué)習(xí)曲線中等至陡峭,對于初學(xué)者或較小的項目,Ember可能不是最佳選擇。它具有許多活動部件,并且在組織事物時沒有提供很大的靈活性,合團(tuán)隊工作的一部分。
結(jié)論
本文對當(dāng)今市場上五個最受歡迎的前端框架進(jìn)行了比較,為開發(fā)者按照個人能力和項目需求進(jìn)行選擇時提供一個更好的參照。