vue和angular(1.x)的比較

面試有贊的時候。被問到了vue和angular框架的對比,包括數(shù)據(jù)綁定機(jī)制及其優(yōu)缺點。由于我的技術(shù)棧是vue2.0和angular1.x,這里先對這兩個版本的框架進(jìn)行對比。

1. angular1.x

vue的語法跟angular1.x是很相似的。但是vue解決了很多在angularJS中出現(xiàn)的問題。

復(fù)雜性

在API和設(shè)計方面,vue都比angular簡單得多,因此可以快速掌握vue的全部特性并投入開發(fā)。--學(xué)習(xí)成本比較低

靈活和模塊化

vue.js是一個更加靈活開發(fā)的解決方案。它允許你以希望的方式組織應(yīng)用程序,而不是在任何時候都必須遵循angular.js制定的規(guī)則,這讓Vue能適用于各種項目。

數(shù)據(jù)綁定

AngularJs使用雙向數(shù)據(jù)綁定,vue在不同組件之間強(qiáng)制使用單向數(shù)據(jù)流。這使應(yīng)用中的數(shù)據(jù)流更加清晰易懂。

指令和組件

在Vue中指令和組件分得更清晰。指令只封裝DOM操作,而組件代表一個自給自足的獨立單元--有自己的視圖和數(shù)據(jù)邏輯。在AngularJs中,每件事都由指令來做,而組件只是一種特殊的指令。

運(yùn)行時性能

Vue有更好的性能,并且非常非常容易優(yōu)化,因為它不使用臟檢查。

在AngularJs中,當(dāng)watcher越來越多的時候會變得越來越慢,因為作用域內(nèi)的每一次變化,所有的watcher都要重新計算。并且,如果一些watcher觸發(fā)另一個更新,臟檢查循環(huán)(digest cycle)可能要運(yùn)行多次。AngularJS常常要使用深奧的技術(shù),以解決臟檢查循環(huán)的問題。有時沒有簡單的方法來優(yōu)化有大量watcher的作用域。

Vue則根本沒有這個問題,因為他使用了基于依賴追蹤的觀察系統(tǒng)并異步隊列更新,所有的數(shù)據(jù)都是獨立觸發(fā),除非他們之間有明確的依賴關(guān)系。

Angular(2.0以上)和Vue用相似的設(shè)計解決了一些AngularJs中存在的問題。

2. Angular(原本的Angular2)

Angular是一個和AngularJs完全不同的框架,比如它具有優(yōu)秀的組件系統(tǒng),并且很多實現(xiàn)已經(jīng)完全重寫了, Api也完全變了。

TypeScript

Angular事實上必須用TypeScript來開發(fā),因為他的文檔和學(xué)習(xí)資源幾乎全部面向TS。TS有很多好處-- 靜態(tài)類型檢查在大規(guī)模的應(yīng)用中非常有用,同時對于Java和C#背景的開發(fā)者也是非常提升開發(fā)效率的。

然而,并不是所有人都想用TS--在中小型規(guī)模的項目中,引入TS可能并不會帶來太多明顯的優(yōu)勢。在這些情況下,用vue會更好的選擇,因為在不用TS情況使用Angular會很有挑戰(zhàn)性。
雖然vue和ts的整合可能不如Angular那么深入,但是vue也提供了光的類型聲明和組件裝飾器。

運(yùn)行時性能

這兩個框架都很快,有非常類似的benchmark數(shù)據(jù)。不過熟讀不是決定性的因素。

體積

在體積方面,最近的Angular版本中使用了AOT和tree-shaking技術(shù)之后是的最終的代碼的體積減小了許多。但即使如此,一個包含了vuex+ + vue Router的Vue項目(gzip之后30kb)相比使用了這些優(yōu)化的angular-cli生成的默認(rèn)項目尺寸(~65kb)還是要小得多。

靈活性

vue相比于Angular更加靈活,Vue官方提供了構(gòu)建工具來協(xié)助你構(gòu)建項目,但他不限制你如何組織你的應(yīng)用代碼。有人夸你喜歡有嚴(yán)格的代碼組織規(guī)范,有人喜歡更自由靈活的方式

學(xué)習(xí)曲線

要學(xué)習(xí)Vue,只需要良好的Html和javascript基礎(chǔ)。有了這些基本的技能,就可以非常快速投入開發(fā)。
Angular的學(xué)習(xí)曲線非常陡峭--作為一個框架,他的API面積比Vue要大得多,你也因此需要理解更多的概念才能開始有效率的工作。Angular本身的復(fù)雜度是因為設(shè)計目標(biāo)只是只針對大型的復(fù)雜應(yīng)用,但是不可否認(rèn)的是,這也使得它對于經(jīng)驗不甚方法的開發(fā)者相當(dāng)不友好。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容