angular
angular一般指 angular2 及以上版本。2010年9月过牙,Google 發(fā)布首次angular甥厦,即angular1版本。2016年10月 Google 又發(fā)布了angular2版本寇钉,但是2版本與1版本有非常大的區(qū)別刀疙,幾乎是全部重寫,且不向前兼容扫倡,更像是一個全新的框架谦秧。遂將angular1改名叫angularJs,現(xiàn)angular特指angular2+撵溃。
vue
于 2014 年 2 月首次由 Google 前員工尤雨溪發(fā)布疚鲤。憑借較低的上手難度、良好的性能征懈,成為2016 年發(fā)展最為迅速的 JS 框架之一石咬,特別是國內(nèi)的增長及其迅速。
框架對比
1.體積和性能
相較于vue卖哎,angular顯得比較臃腫鬼悠,比如一個包含了 Vuex + Vue Router 的 Vue 項目 (gzip 之后 30kB) ,比angular-cli 生成的默認項目尺寸 (~65KB) 還是要小得多亏娜。
在渲染性能上焕窝,這兩個框架都很快,性能上幾乎沒有差別维贺。
2.開發(fā)效率
都提供了各自的腳手架工具它掂,幫助提高從開發(fā)到構(gòu)建打包的整套過程,另外均可以基于組件化開發(fā)溯泣,編寫可復(fù)用的組件虐秋,大大較少重復(fù)性的工作。但angular憑借 Typescript 本身比 JavaScript 更加工程化的優(yōu)勢垃沦,在都是團隊開發(fā)的情況下客给,angular會更具優(yōu)勢。
3.靈活性
Vue 相比于 Angular 更加靈活肢簿,可以按照不同的需要去組織項目的應(yīng)用代碼靶剑。比如蜻拨,甚至可以直接像引用jquery那樣在HTML中引用vue,然后僅僅當成一個前端的模板引擎來用桩引。
4.可維護性
我理解的可維護性包括兩個層次缎讼,一是代碼的可讀性,二是可重構(gòu)性坑匠。同樣是因為對TS(能提供靜態(tài)類型檢查)的支持不夠全面血崭,使得vue在這兩個層次都有些不足。vue作者本人也承認vue在TS 的支持上還有所不足笛辟,在3.0版本中將會有所改進功氨。
5.es6支持
es6是新一代的javascript標準,對JavaScript進行了大量的改進手幢,使用es6開發(fā)已是基本需求捷凄。雖然有部分十分老舊的瀏覽器不支持es6,但是可以利用現(xiàn)代開發(fā)工具將es6編譯成es5围来。在對es6的支持上兩者都做得很好跺涤,(TS本身就是es6的超集)
6.學(xué)習曲線
針對前端而言,angular的學(xué)習曲線相對較大监透,vue學(xué)習起來更容易一些桶错。不過對java和c的使用者而言,angular的靜態(tài)檢查胀蛮、依賴注入的特性院刁,以及面向?qū)ο蟮木幊田L格,使得angular都要更親切一些粪狼。
7.使用熱度
在使用熱度上退腥,vue具有更大優(yōu)勢,主要原因是更受數(shù)量龐大的中國開發(fā)者歡迎再榄。較低的上手難度狡刘,易懂的開發(fā)文檔,以及國人主導(dǎo)開發(fā)的光環(huán)困鸥,都使得vue在國內(nèi)更為流行嗅蔬。但最近6個月似乎情況有所變化:
總結(jié)
相較于vue,angular的優(yōu)點:
1.開發(fā)效率更高
2.可維護性可強
3.對java和c使用者更友好
缺點:
1.體積大
2.靈活性差疾就,不能隨心所欲的選擇使用方式
3.學(xué)習曲線陡峭
4.國內(nèi)使用熱度不及vue
框架選擇
最終選擇 angular 最為開發(fā)框架澜术,除了angular本身的優(yōu)點以外,其余理由如下:
1.雖然其體積相對較大猬腰,但并沒有大得非常過分瘪板。此外在開發(fā)和構(gòu)建工程中,可以使用惰性模塊加載和搖樹優(yōu)化漆诽,可以使首頁加載的資源較少侮攀,以及在AOT編譯模式下,網(wǎng)絡(luò)方面的損耗時間可以在渲染階段進行一定彌補厢拭。最后本項目主要在內(nèi)網(wǎng)使用的情況下兰英,帶來的網(wǎng)絡(luò)延遲并不明顯。
2.angular使用方式不如vue靈活供鸠,但是在本項目中并不需要很刁鉆的使用方式畦贸。
3.雖然本身上手難度更大,但我有過angular獨立且完整的開發(fā)經(jīng)驗楞捂,對vue反而更陌生一些薄坏。
4.使用熱度對項目本身的影響可能有兩個,一是框架bug的解決情況寨闹,二是開發(fā)人員的招聘會相對困難一些胶坠。針對第一點,熱度低只是相對的繁堡,在全球如此大的開發(fā)人群基數(shù)下沈善,框架早已趨于穩(wěn)定,且有專門的團隊在維護椭蹄。針對第二點闻牡,大多數(shù)的前端招聘上都有一句話 “掌握react \ angular \ vue” ,也從側(cè)面暗示了其實三大框架只要學(xué)會一個绳矩,短時間內(nèi)掌握上手其他兩個都不是太大的問題罩润。