App下載

React 與 Angular:誰(shuí)贏得了競(jìng)爭(zhēng)?

知名氣人小說(shuō)寫(xiě)手 2021-08-25 14:06:25 瀏覽數(shù) (3796)
反饋

選擇前端開(kāi)發(fā)的最佳選項(xiàng)

React.js 與 Angular。他們同樣擅長(zhǎng)構(gòu)建基于 Web 的應(yīng)用程序。世界上的一些項(xiàng)目是用 React.js 構(gòu)建的,其他相同大小的項(xiàng)目是用 Angular 構(gòu)建的。


這些強(qiáng)調(diào) React.js 和 Angular 的例子適合制作大型和可擴(kuò)展的平臺(tái),每時(shí)每刻處理大量請(qǐng)求。

當(dāng)前流行度統(tǒng)計(jì)

React.js 在 GitHub 上的 Node Package Manager (NPM) 下載量位居榜首并超過(guò) Angular。差別是巨大的。

去年對(duì) Stackoverflow 用戶(hù)的調(diào)查表明 React.js 比 Angular 受歡迎 10%。

 

這是否意味著 Angular 出現(xiàn)了問(wèn)題?或者,這是否意味著 React.js 提供了比 Angular 更好的解決方案?

Angular 的主要原理

讓我們通過(guò)簡(jiǎn)要概述這兩個(gè)系統(tǒng)來(lái)弄清楚。Angular 起源于谷歌的初創(chuàng)產(chǎn)品,其中產(chǎn)品開(kāi)發(fā)的關(guān)鍵是在一個(gè)地方管理多個(gè)進(jìn)程。任何不合理的決定都可能導(dǎo)致問(wèn)題并影響瞬間運(yùn)行的數(shù)十億用戶(hù)操作。

Angular 成為一個(gè)預(yù)定義編程步驟的整體框架。盡管它通過(guò)服務(wù)、控制器和模塊豐富了開(kāi)發(fā)過(guò)程,但它決定了自己的思維和工作方式。這在程序員和框架之間產(chǎn)生了距離。

除此之外,還有一些其他因素使 Angular 難以訪問(wèn): 

  1. Angular 使用面向?qū)ο缶幊蹋∣OP),所以它的知識(shí)是硬技能。
  2. 開(kāi)發(fā)人員應(yīng)該很好地掌握 TypeScript。
  3. RxJS 的知識(shí)也是必備的。

顯然,學(xué)習(xí)曲線非常高。與 React.js 不同,Angular 需要開(kāi)發(fā)人員有更多的 OOP 相關(guān)經(jīng)驗(yàn)??紤]到他們團(tuán)隊(duì)的高專(zhuān)業(yè)知識(shí),這對(duì) Google 很有效。Angular 被設(shè)想為一種端到端的解決方案,并且與他們先進(jìn)的編程文化兼容。

盡管架構(gòu)復(fù)雜,但 Angular 有其無(wú)可爭(zhēng)議的好處:

  • 雙向數(shù)據(jù)綁定自動(dòng)同步模型和視圖。比如說(shuō),如果數(shù)據(jù)在模型中改變了,它會(huì)在視圖(DOM)中自動(dòng)改變。這樣的功能不需要編寫(xiě)更多額外的代碼。想象一下 Google Drive 的文檔,當(dāng)用戶(hù)在文檔中鍵入文本時(shí),另一個(gè)用戶(hù)會(huì)實(shí)時(shí)查看它。由于雙向數(shù)據(jù)綁定,這樣的功能是可能的。
  • 依賴(lài)注入 (DI),可以將依賴(lài)從一個(gè)類(lèi)傳遞到另一個(gè)類(lèi)。由于 DI,服務(wù)器端服務(wù)可以委托給客戶(hù)端。因此,這是在 Angular 中使用 OOP 的一個(gè)重要優(yōu)勢(shì)。
  • 指令旨在通過(guò)為其提供新語(yǔ)法來(lái)豐富 HTML。最常見(jiàn)的指令是組件。使用它,程序員可以為現(xiàn)有元素創(chuàng)建任何屬性并更改其行為。這是一個(gè)很有用的特性,它使得使用 DOM 非常靈活。

Angular 豐富了許多其他有價(jià)值的功能,比如 UI Material,使得在項(xiàng)目的其他部分重用組件代碼成為可能,但這也類(lèi)似于 React 提供的功能。

今天誰(shuí)選擇了 Angular?

經(jīng)驗(yàn)豐富的前端開(kāi)發(fā)人員分享說(shuō),當(dāng) React.js 是早期初創(chuàng)公司和小公司的更好選擇時(shí),Angular 非常適合企業(yè)解決方案和企業(yè)部門(mén)。這可以解釋為,大企業(yè)不會(huì)經(jīng)常改變他們的優(yōu)先事項(xiàng),而且他們的 CTO 更早知道戰(zhàn)略目標(biāo)。

您可以從我們的概述中獲得的要點(diǎn)是記住,對(duì)于需要可靠性高于一切的長(zhǎng)期項(xiàng)目,Angular 是更好的選擇。除了列表中提到的其他公司之外,還有一些公司正在使用 Angular:Microsoft Office、德意志銀行和三星。

React.js 甚至不稱(chēng)自己為框架,而是一個(gè) JS 庫(kù)。與 Angular 不同,React.js 將設(shè)置項(xiàng)目結(jié)構(gòu)、為 HTTP 路由尋找相關(guān)服務(wù)等成為開(kāi)發(fā)人員的責(zé)任。在這一點(diǎn)上,React 的思想是敏捷的,為開(kāi)發(fā)者提供絕對(duì)的自由。因此,它從一開(kāi)始就最小化了項(xiàng)目的大小,因?yàn)樗鼈兛赡軙?huì)涉及到他們?cè)谀硞€(gè)時(shí)間需要的那些庫(kù)。

假設(shè)您是項(xiàng)目中唯一的前端開(kāi)發(fā)人員,或者只有幾個(gè)。這里的主要目標(biāo)是為最短的視角設(shè)定的。你應(yīng)該既快速又高效,能夠適應(yīng)創(chuàng)業(yè)目標(biāo)。Angular 的直接規(guī)則和架構(gòu)要求會(huì)減慢開(kāi)發(fā)過(guò)程。

因此,遵循單一策略并不是 React.js 社區(qū)的主要優(yōu)先事項(xiàng)。事實(shí)上,這與 Angular 正好相反。

值得一提的是,React.js 不能單獨(dú)工作,因?yàn)樗皇且晥D(V),需要一個(gè)引擎進(jìn)行數(shù)據(jù)處理。開(kāi)發(fā)人員需要弄清楚它的實(shí)現(xiàn),使用 Redux 和 Saga 進(jìn)行管理,并單獨(dú)安排。

是什么讓 React.js 與眾不同?

  • 學(xué)習(xí)曲線很低。具有 HTML 和 JavaScript 經(jīng)驗(yàn)的開(kāi)發(fā)人員可以進(jìn)行 Web 開(kāi)發(fā)并很快展示他們的第一個(gè)成果。
  • 架構(gòu)很簡(jiǎn)單,不需要花太多時(shí)間來(lái)研究它的所有結(jié)構(gòu)。
  • 虛擬 DOM 減少了服務(wù)器端渲染的時(shí)間。
  • 巨大的社區(qū)支持,定期為 React.js 集合做出貢獻(xiàn)。
  • 直觀的環(huán)境,令人愉快的界面。

虛擬DOM解決了什么問(wèn)題?

當(dāng)前的情況是:如果用戶(hù)瀏覽器在單擊頁(yè)面時(shí)發(fā)生了任何更改,這些更改將自動(dòng)記錄到 DOM 中。要在網(wǎng)頁(yè)上顯示更改,瀏覽器應(yīng)重新加載整個(gè) DOM 結(jié)構(gòu)。它會(huì)給瀏覽器帶來(lái)更多的負(fù)載并降低應(yīng)用程序的性能。

React.js 在性能方面的創(chuàng)新

  • React.js 創(chuàng)建 DOM 的快照,稱(chēng)為虛擬 DOM (VDOM)。
  • UI 組件中的每一個(gè)新變化都要首先記錄到新的虛擬 DOM 中,而不是常規(guī)的。
  • React.js 比較新版本的 VDOM,并確定這些更改是否對(duì)更新瀏覽器的 DOM 至關(guān)重要。
  • 如果更改是必不可少的,React.js 會(huì)使用最新的更改部分更新 DOM。

React.js 有這樣的計(jì)算算法,允許它決定何時(shí)更新瀏覽器中的 DOM。這使得前端應(yīng)用程序非常具有性能。不幸的是,Angular 沒(méi)有任何與此功能類(lèi)似的功能。


話(huà)雖如此,當(dāng) Angular 用許多擴(kuò)展補(bǔ)充 HTML 時(shí),React.js 有助于為項(xiàng)目編寫(xiě)干凈的 JavaScript 代碼。這會(huì)在一段時(shí)間內(nèi)變得混亂,并且很難處理這樣一個(gè)擴(kuò)大的代碼。

是時(shí)候說(shuō):React.js 在當(dāng)今前端開(kāi)發(fā)領(lǐng)域占據(jù)主導(dǎo)地位。

先進(jìn)的特性、易用性、廣泛的 JavaScript 庫(kù)集合使 React.js 處于比 Angular 更高的位置。這證明了以用戶(hù)為中心的方法是王道的想法。React.js 已成為制作前端應(yīng)用程序的直觀而強(qiáng)大的資源。

由于 React.js 的勝利,諸如“Angular vs. React”之類(lèi)的討論顯然即將結(jié)束。如今,社區(qū)對(duì) Vue.js 等其他框架非常感興趣,這種比較在今天會(huì)更加實(shí)際。


0 人點(diǎn)贊