在2015年,我們聽(tīng)到過(guò)angularjs開(kāi)發(fā)者最尋常的評(píng)論也許是,'我已經(jīng)花費(fèi)大量美好的時(shí)間在angular1上,但是我現(xiàn)在要轉(zhuǎn)向react'停巷。在今年,Angular2的初步版本已經(jīng)提早發(fā)布,但改進(jìn)的測(cè)試版本還在等待當(dāng)中工育。即使在angular2登陸之前,一場(chǎng)拔河類(lèi)的比賽在angularjs開(kāi)發(fā)者和react開(kāi)發(fā)者之間已經(jīng)開(kāi)始己沛。這導(dǎo)致了許多有偏見(jiàn)的文章和博客的寫(xiě)作呀页,突出react作為贏家颗祝,而忘記了angular的本質(zhì)優(yōu)點(diǎn)著蛙。本文提出重要的客觀的支持二個(gè)杰出的平臺(tái)語(yǔ)言。
注:-許多開(kāi)發(fā)人員認(rèn)為比較angular2與react是無(wú)意義的桦山,angular是一個(gè)框架攒射,而react是一個(gè)庫(kù)。然而恒水,比較這兩種技術(shù)是需要的会放,都是前端UI設(shè)計(jì)的技術(shù),采用不同的方法钉凌。這是一種是不是一個(gè)核心的比較咧最,以跟蹤“明確的贏家”,通過(guò)分析所有這些分散的論點(diǎn),但在一些關(guān)鍵方面矢沿,開(kāi)發(fā)者往往忽略了在作出部分提升的時(shí)間滥搭。
React的目的
react的主要目的是為開(kāi)發(fā)人員提供一個(gè)優(yōu)秀的視圖的應(yīng)用程序,并提供可重用的聲明式插件框架的有效方法。
Angular 2的目的
angular2的目的是為程序員提供一個(gè)完整的前端框架,強(qiáng)化了關(guān)注點(diǎn)的分解,而不是堅(jiān)持一個(gè)特定的體系結(jié)構(gòu)捣鲸。
React和Angular2的相同點(diǎn)
React和Angualr2作為前端技術(shù)服務(wù)開(kāi)發(fā)者,幫助他們構(gòu)建網(wǎng)站或移動(dòng)應(yīng)用程序,基于組件的用戶(hù)界面瑟匆。這些技術(shù)采用用FRP & OOP模式,沒(méi)有任何性能滯后。
React和Angular2的不同點(diǎn)
Angular2是一個(gè)充分發(fā)展的框架,而react是一個(gè)有強(qiáng)大社區(qū)庫(kù)支持的庫(kù)栽惶。Angular2提供很多功能愁溜。變化檢測(cè)在二個(gè)平臺(tái)之間是完全不同的。Angualr2有一個(gè)強(qiáng)制的關(guān)注點(diǎn)分離的依賴(lài)注入,和服務(wù)外厂。DI管理反轉(zhuǎn)控制Angular2冕象。Angular2使用的語(yǔ)言是TypeScript,而React運(yùn)行在ES5/ES6。都支持不同的方式定義UI,Angualr2使用HTML模板,React利用JSX汁蝶。React支持靜態(tài)類(lèi)型,幫助它獲得性能改進(jìn)超過(guò)Angular2交惯。
React的優(yōu)缺點(diǎn)
- 程序員可以實(shí)現(xiàn)兩個(gè)獨(dú)立的方法。他們只能處理數(shù)據(jù)的變化(組件更新)或允許對(duì)依靠自動(dòng)改變穿仪。它是一種更容易的技術(shù)學(xué)習(xí)。flux在處理DOM時(shí)帶來(lái)性能上的提升意荤。
- React的一個(gè)主要缺點(diǎn)是實(shí)現(xiàn)變化的檢測(cè)啊片。這個(gè)過(guò)程缺乏可擴(kuò)展性。堆棧跟蹤在React有點(diǎn)混亂玖像。
Angular2的優(yōu)缺點(diǎn)
- Angular2主要優(yōu)勢(shì)是程序員使用Angualr2處理變化檢測(cè)紫谷。它提供了選擇發(fā)展變化檢測(cè)的完整的應(yīng)用程序。單獨(dú)的算法可用于快速傾斜緩存和動(dòng)態(tài)變化檢測(cè)捐寥。
- Angular2的學(xué)習(xí)曲線很低,因此新手開(kāi)發(fā)人員發(fā)現(xiàn)大的困難在學(xué)習(xí)語(yǔ)法和結(jié)構(gòu)笤昨。性能、錯(cuò)誤信息和工具相比有點(diǎn)落后于React握恳。
React的使用
React包含大多數(shù)開(kāi)發(fā)人員都熟悉的庫(kù),因此開(kāi)發(fā)人員可以集成庫(kù)項(xiàng)目中容易得多瞒窒。jQuery的應(yīng)用程序可以快速遷移到React。React提供了更好的支持IE8,仍然是一個(gè)高度成熟技術(shù)乡洼。合成事件的功能只是在處理SVG崇裁。
Angular2的使用
Angular2是現(xiàn)代和內(nèi)置保持更高的標(biāo)準(zhǔn)。它提供了一個(gè)巨大的支持web組件,加入的項(xiàng)目,和web工匠束昵。Angular2,安排與方便的變化檢測(cè)選項(xiàng),和類(lèi)似的實(shí)踐(一旦掌握了它易于使用)拔稳。
Angular2和React的關(guān)鍵方面
- Angualr2和React都用不同的方式熱加載,Angualr2依賴(lài)Typescript提供的原型,而React的flux-like提供一個(gè)成熟的熱加載方式。
- React提供了一個(gè)更加成熟的處理在服務(wù)器端呈現(xiàn)時(shí),但angular2在性能上保持領(lǐng)先锹雏。
- JSX(React)的開(kāi)發(fā)人員不需要學(xué)習(xí)任何額外的語(yǔ)法,而是使用angular2開(kāi)發(fā)者將不得不學(xué)習(xí)特定的語(yǔ)法(最好的例子是事件和屬性)巴比。
- Angualr2模板完全聲明。一個(gè)組件可以使用多個(gè)模板,因此它支持簡(jiǎn)單的重用代碼,尤其是在不同的視圖。
- React支持可以為空,和簡(jiǎn)單的集成轻绞。另一方面,Angualr2有一個(gè)極好的文本編輯器,類(lèi)型定義,支持接口采记。
- React為iOS和Android移動(dòng)解決方案提供了更好的支持然而在很大程度上Angular2是NativeScript。
- Angualr在HTML模板包著JS和React(JSX)涵蓋了一些HTML在JS铲球。
- Angular的庫(kù)是如此廣泛,但React提供了一個(gè)更有效更有目的庫(kù)挺庞。
- 在構(gòu)建工具方面,React優(yōu)于Angular2
- Angular2文件大小大于React,但它會(huì)降低,等推出了測(cè)試版(很大可能)。
- 錯(cuò)誤消息和工具將更好在Angular2測(cè)試版稼病。
- 我們可以期待Angular2測(cè)試版更像React选侨。
- Angular2在服務(wù)器端渲染插件得到異步加載優(yōu)于React。在React中,程序員用“shouldComponentUpdate”來(lái)避免調(diào)用阻塞然走。它有助于Angular2視圖加載迅速援制。
- React有更多新的ideas,像clojure, redux, +om 等等。
最后
React和Angular2都是偉大的前端技術(shù)芍瑞。在兩者之間明確指出一個(gè)贏家是很難的晨仑。在大多數(shù)情況下兩者之間的選擇可能取決于舒適,技術(shù)和開(kāi)發(fā)人員的生產(chǎn)力。
推薦閱讀
翻譯自:https://www.agriya.com/blog/2016/08/04/angular-2-vs-react-what-developers-often-forget/
翻譯者:cll