vue 與 react闯捎,angular 優(yōu)缺點(diǎn)對(duì)比

vue?

API設(shè)計(jì)上簡(jiǎn)單秉版,語(yǔ)法簡(jiǎn)單沐飘,學(xué)習(xí)成本低?

構(gòu)建方面不包含路由和ajax功能,使用vuex, vue-router?

指令(dom)和組件(視圖檩禾,數(shù)據(jù)盼产,邏輯)處理清晰?

性能好灌灾,容易優(yōu)化?

基于依賴追蹤的觀察系統(tǒng)嘿般,并且異步隊(duì)列更新?

獨(dú)立觸發(fā)?

v-model 實(shí)時(shí)渲染

適用于:模板和渲染函數(shù)的彈性選擇?

簡(jiǎn)單的語(yǔ)法及項(xiàng)目搭建?

更快的渲染速度和更小的體積

react?

利用jsx創(chuàng)建虛擬dom?

是一種在內(nèi)存中描述dom數(shù)狀態(tài)的數(shù)據(jù)結(jié)構(gòu)?

函數(shù)式的方法描述視圖?

使用虛擬dom作為模板?

程序片段?

不好控制dom?

生命周期?

服務(wù)端渲染:react的虛擬dom的生成可以在任何支持js的環(huán)境生成的功偿,所以可以在node環(huán)境生成痹兜,直接轉(zhuǎn)為string,然后插入到html文件中輸出瀏覽器便可?

適用于:大型應(yīng)用和更好的可測(cè)試性;同時(shí)適用于web端和原生app;更大的生態(tài)圈

優(yōu)點(diǎn)

React偉大之處就在于屈暗,提出了Virtual Dom這種新穎的思路拆讯,并且這種思路衍生出了React Native,有可能會(huì)統(tǒng)一Web/Native開發(fā)养叛。在性能方面种呐,由于運(yùn)用了Virtual Dom技術(shù),Reactjs只在調(diào)用setState的時(shí)候會(huì)更新dom弃甥,而且還是先更新Virtual Dom爽室,然后和實(shí)際Dom比較,最后再更新實(shí)際Dom潘飘。這個(gè)過(guò)程比起Angularjs的bind方式來(lái)說(shuō)肮之,一是更新dom的次數(shù)少,二是更新dom的內(nèi)容少卜录,速度肯定快?

ReactJS更關(guān)注UI的組件化戈擒,和數(shù)據(jù)的單向更新,提出了FLUX架構(gòu)的新概念艰毒,現(xiàn)在React可以直接用Js ES6語(yǔ)法了筐高,然后通過(guò)webpack編譯成瀏覽器兼容的ES5,開發(fā)效率上有些優(yōu)勢(shì).?

React Native生成的App不是運(yùn)行在WebView上丑瞧,而是系統(tǒng)原生的UI柑土,React通過(guò)jsx生成系統(tǒng)原生的UI,iOS和Android的React UI組件還是比較相似的绊汹,大量代碼可以復(fù)用?

維護(hù)UI的狀態(tài),Angular 里面使用的是 $scope稽屏,在 React 里面使用的是 this.setState。 而 React 的好處在于西乖,它更簡(jiǎn)單直觀狐榔。所有的狀態(tài)改變都只有唯一一個(gè)入口 this.setState()坛增,Angular 就比較復(fù)雜,不知道背后使用了哪些黑魔法薄腻。?

同構(gòu)的JavaScript?

單頁(yè)面JS應(yīng)用程序的最大缺陷在于對(duì)搜索引擎的索引有很大限制收捣。React對(duì)此有了解決方案。?

React可以在服務(wù)器上預(yù)渲染應(yīng)用再發(fā)送到客戶端庵楷。它可以從預(yù)渲染的靜態(tài)內(nèi)容中恢復(fù)一樣的記錄到動(dòng)態(tài)應(yīng)用程序中罢艾。?

因?yàn)樗阉饕娴呐老x程序依賴的是服務(wù)端響應(yīng)而不是JavaScript的執(zhí)行,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化尽纽。?

缺點(diǎn)

React是目標(biāo)是UI組件咐蚯,通常可以和其它框架組合使用蜓斧,目前并不適合單獨(dú)做一個(gè)完整的框架仓蛆。React 即使配上 redux 的組合睁冬,也不能稱之一個(gè)完整的框架挎春,比如你想用Promise化的AJAX?對(duì)不起沒有豆拨,自己找現(xiàn)成的庫(kù)去直奋。而且第三方組件遠(yuǎn)遠(yuǎn)不如Angular多。目前在大的穩(wěn)定的項(xiàng)目上采用React的施禾,我也就只知道有Yahoo的Email脚线。React本身只是一個(gè)V而已,所以如果是大型項(xiàng)目想要一套完整的框架的話弥搞,也許還需要引入Redux和route相關(guān)的東西邮绿。而Angular在這方面提供的東西比React多多了.

angular?

優(yōu)點(diǎn)

AngularJS是一套完整的框架,angular有自帶的數(shù)據(jù)綁定攀例、render渲染船逮、angularUI庫(kù),過(guò)濾器,directive(模板),服務(wù)q(defer),http,inject(依賴注入),factory,provider……粤铭,等等一系列工具挖胃,基本上只要你在做web開發(fā)用過(guò)的東西,它都有一個(gè)梆惯。但是這些東西React自身都沒有酱鸭。

Angularjs的架構(gòu)清晰,分工明確垛吗,擴(kuò)展性良好凹髓,model,view怯屉,controller誰(shuí)在什么時(shí)候做什么事情說(shuō)的很清楚蔚舀,angular能夠讓程序員真正專注于業(yè)務(wù)邏輯防泵,而且因?yàn)閷?duì)html侵入不大,非常易于和designer協(xié)作蝗敢。整個(gè)框架充滿了DI的思路捷泞,耦合性非常低,對(duì)象都是被inject的寿谴,也就是說(shuō)每個(gè)對(duì)象都可以輕易被替換而不影響其他對(duì)象锁右。

Angular生產(chǎn)效率高,單向數(shù)據(jù)流什么的想法非常好讶泰,但是寫起來(lái)太麻煩咏瑟!我只想變更個(gè)很簡(jiǎn)單的數(shù)據(jù)還要經(jīng)過(guò)action、dispatcher痪署、reduce码泞、view四步,angular里一行代碼就搞定的事情在react里卻如此麻煩

缺點(diǎn)

性能?

雙向數(shù)據(jù)綁定是一把雙刃劍狼犯。隨著組件增加余寥,項(xiàng)目越來(lái)越復(fù)雜,雙向數(shù)據(jù)綁定帶來(lái)性能問(wèn)題悯森。?

雙向數(shù)據(jù)綁定是如何影響性能的宋舷?在JavaScript(ES5)中,并沒有實(shí)現(xiàn)當(dāng)變量或?qū)ο蟾淖儠r(shí)發(fā)出通知的功能瓢姻,Angular的實(shí)現(xiàn)方法被叫做“Dirty-checking(臟檢查機(jī)制)”祝蝠,通過(guò)跟蹤數(shù)據(jù)的改變?cè)賱?dòng)態(tài)更新用戶界面(UI)。?

在Angular的作用域中任何操作的執(zhí)行都會(huì)引發(fā)Dirty-checking幻碱,隨著綁定數(shù)量的增加性能就會(huì)越低绎狭。?

Angular 2.0推翻重做使得目前不宜采用此框架?

Angular 1.x版本其實(shí)是個(gè)比較舊的東西了,現(xiàn)在看來(lái)有些理念過(guò)時(shí)了褥傍,比如依賴注入儡嘶、自己獨(dú)特的模塊化,這些東西其實(shí)在ES6下已經(jīng)很好地被解決了摔桦。?

Angular的2.0幾乎是一個(gè)推翻重做的框架社付,估計(jì)不會(huì)有1.X的upgrade方案。所以如果現(xiàn)在新開始的項(xiàng)目采用Angular的話邻耕,會(huì)是一個(gè)很尷尬的時(shí)機(jī)鸥咖。同樣,如此大的改動(dòng)似乎也反面印證了1.X并不是那么好兄世。?

學(xué)習(xí)成本高?

使用Angular需要學(xué)習(xí)大量的概念啼辣,包括但不限于:?

模塊?

控制器?

指令?

作用域?

模板?

鏈?zhǔn)胶瘮?shù)?

過(guò)濾器?

依賴注入

vue,react 共性:?

虛擬dom實(shí)現(xiàn)快速渲染?

輕量級(jí)響應(yīng)式組件?

服務(wù)端渲染易于集成路由工具,打包工具及狀態(tài)管理工具

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末御滩,一起剝皮案震驚了整個(gè)濱河市鸥拧,隨后出現(xiàn)的幾起案子党远,更是在濱河造成了極大的恐慌,老刑警劉巖富弦,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沟娱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腕柜,警方通過(guò)查閱死者的電腦和手機(jī)济似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盏缤,“玉大人砰蠢,你說(shuō)我怎么就攤上這事“ν” “怎么了台舱?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)潭流。 經(jīng)常有香客問(wèn)我竞惋,道長(zhǎng),這世上最難降的妖魔是什么幻枉? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮熬甫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔓罚。我一直安慰自己椿肩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布豺谈。 她就那樣靜靜地躺著郑象,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茬末。 梳的紋絲不亂的頭發(fā)上厂榛,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音丽惭,去河邊找鬼击奶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛责掏,可吹牛的內(nèi)容都是我干的柜砾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼换衬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痰驱!你這毒婦竟也來(lái)了证芭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤担映,失蹤者是張志新(化名)和其女友劉穎废士,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝇完,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湃密,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了四敞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泛源。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忿危,靈堂內(nèi)的尸體忽然破棺而出达箍,到底是詐尸還是另有隱情,我是刑警寧澤铺厨,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布缎玫,位于F島的核電站,受9級(jí)特大地震影響解滓,放射性物質(zhì)發(fā)生泄漏赃磨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一洼裤、第九天 我趴在偏房一處隱蔽的房頂上張望邻辉。 院中可真熱鬧,春花似錦腮鞍、人聲如沸值骇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吱瘩。三九已至,卻和暖如春迹缀,著一層夾襖步出監(jiān)牢的瞬間使碾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工祝懂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留票摇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓嫂易,卻偏偏與公主長(zhǎng)得像兄朋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容