2017年前端炒的火熱的莫非於三大框架,angular、vue、react,談談我對這三大框架的理解前端
期初在前三四年或者更早,前端還沒被徹底分離出來,原生js開發前端頁面,彷佛並不優雅,比如咱們蓋房子,一塊磚一塊磚的蓋,很耗時,也不方便維護,漸漸地jQuery庫的產生,提升了開發人員的效率,減小了瀏覽器的兼容,一時間不少漲粉,到如今一些舊的項目仍然在使用,but,他沒有mvc,mvvm構架,須要本身進行配置。vue
後來出現了mvc框架的angular,這個效率比較低,只要發生變化,就得從新遍歷計算;react
而後出現了react,react的虛擬dom減小了dom操做,下降了項目成本,提升效率和程序性能,可是react是基於view層的,他須要配合一些其餘的框架,如flux,redux等,若是拿react跟vue比較的話,使用起來會相對複雜,好比,不能使用指令,遍歷不方便,;算法
而vue相對react而言,沒有react靈活,搭配自如,可是他開發起來很高效,vue的插件,組件,生態系統對於咱們通常的項目已經足夠了,雖然vue的是我的主導的,react是Facebook團隊維護的,社區比較繁榮,但vue適合不少項目,也正在慢慢的擴大,前景也是很不錯的。redux
做爲元老級的Angular,先後經angular一、angular二、angular4,每一個版本彷佛都是一個新的框架。api
angular1中的ng-if和vue的v-if很相像,由於vue的指令系統就是從angular1中獲取的靈感,並且angular1中 的不少問題在vue中得以解決;瀏覽器
到了angular2,他比起1來講,是一個全新的框架,好比說,有更優秀的組件系統,api也變了不少等等,雖然改進了不少,但仍是很臃腫;angular2
相比於angular2,angular4的功能列表中添加了許多新功能,同時還有一些舊功能的改進,使用angular4程序將會消耗更少的空間,比起之前的版本運行的更快。react-router
當項目對性能要求不高的時候,可使用angular,或者一些曾經一直用的angular1的項目有必要升級一下了,並且哪有不要求性能的項目,因此angular對於一些新型項目慎重考慮...架構
官方說react是由於Facebook對市場上的mvc框架都不滿意,本身寫了一套用來架構Instagram網站,由於好用,2013年5月開源的,到先在2017年末,react已經升級到了16.2,路由react-router3升爲react-router4,react-router-dom
react不得不提的是虛擬DOM(Virtual DOM),當頁面初次加載的時候會產生一顆dom樹,內存中會產生一顆render樹,當數據發生更改的時候,會將更改的內容和存有的render樹進行對比,找出最優的算法,而後更改render樹,最後從新生成頁面的dom樹,有了虛擬dom,前端的性能提升了不少。
react的組件化思想尤其體現,將view層分紅各個獨立的組件,下降耦合度,組件化使得組件間可組合,可重用,可維護,從而大大提升開發效率
react是基於view層的,要想發揮他的做用,必須配合一些插件,例如flux,redux等,固然,能夠配合更多的庫來達到更好的效果
react的使用基本上是大型項目的首選,組件化和靈活性是大型項目的條件,其次,react native可讓react運行在移動設備上。
Vue是2014年2月開源的,尤大牛主導的vue編寫,到目前爲止升級到了v2.5,vue的全家桶Vue-router,Vuex,服務端渲染,以及vue的虛擬dom,組件化,性能,不差於react,對於沒有Angular 和react經驗的團隊,而且規模不是很大的前端項目來講,vue是一個很好的選擇
框架的選型不只要看項目自己,還要綜合公司團隊,團隊的技術棧可能直接致使項目框架的選型