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