當前,三大主流前端框架分別是React斋否、Vue、Angular這三個框架拭荤。
React 起源于 Facebook 的內(nèi)部項目茵臭,用來架設(shè) Instagram 的網(wǎng)站, 并于 2013年 5 月開源舅世。React 擁有較高的性能旦委,代碼邏輯非常簡單,越來越多的人已開始關(guān)注和使用它雏亚。它有以下的特性:
1.聲明式設(shè)計:React采用聲明范式缨硝,可以輕松描述應(yīng)用。
2.高效:React通過對DOM的模擬罢低,最大限度地減少與DOM的交互查辩。
3.靈活:React可以與已知的庫或框架很好地配合宜岛。
優(yōu)點:
1. 速度快:在UI渲染過程中,React通過在虛擬DOM中的微操作來實現(xiàn)對實際DOM的局部更新功舀。
2. 跨瀏覽器兼容:虛擬DOM幫助我們解決了跨瀏覽器問題萍倡,它為我們提供了標準化的API,甚至在IE8中都是沒問題的日杈。
3. 模塊化:為你程序編寫?yīng)毩⒌哪K化UI組件遣铝,這樣當某個或某些組件出現(xiàn)問題是瘫絮,可以方便地進行隔離。
4. 單向數(shù)據(jù)流:Flux是一個用于在JavaScript應(yīng)用中創(chuàng)建單向數(shù)據(jù)層的架構(gòu)填硕,它隨著React視圖庫的開發(fā)而被Facebook概念化麦萤。
5. 同構(gòu)、純粹的javascript:因為搜索引擎的爬蟲程序依賴的是服務(wù)端響應(yīng)而不是JavaScript的執(zhí)行扁眯,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化壮莹。
6.兼容性好:比如使用RequireJS來加載和打包,而Browserify和Webpack適用于構(gòu)建大型應(yīng)用姻檀。它們使得那些艱難的任務(wù)不再讓人望而生畏命满。
缺點:
React本身只是一個V而已,并不是一個完整的框架绣版,所以如果是大型項目想要一套完整的框架的話胶台,基本都需要加上ReactRouter和Flux才能寫大型應(yīng)用。
Vue是尤雨溪編寫的一個構(gòu)建數(shù)據(jù)驅(qū)動的Web界面的庫杂抽,準確來說不是一個框架诈唬,它聚焦在V(view)視圖層。
它有以下的特性:
1.輕量級的框架
2.雙向數(shù)據(jù)綁定
3.指令
4.插件化
優(yōu)點:
1. 簡單:官方文檔很清晰缩麸,比 Angular 簡單易學铸磅。
2. 快速:異步批處理方式更新 DOM。
3. 組合:用解耦的杭朱、可復用的組件組合你的應(yīng)用程序阅仔。
4. 緊湊:~18kb min+gzip,且無依賴弧械。
5. 強大:表達式 無需聲明依賴的可推導屬性 (computed properties)霎槐。
6. 對模塊友好:可以通過 NPM、Bower 或 Duo 安裝梦谜,不強迫你所有的代碼都遵循 Angular 的各種規(guī)定,使用場景更加靈活袭景。
缺點:
1. 新生兒:Vue.js是一個新的項目唁桩,沒有angular那么成熟。
2. 影響度不是很大:google了一下耸棒,有關(guān)于Vue.js多樣性或者說豐富性少于其他一些有名的庫荒澡。
3. 不支持IE8
Angular是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當中与殃。
它有以下的特性:
1.良好的應(yīng)用程序結(jié)構(gòu)
2.雙向數(shù)據(jù)綁定
3.指令
4.HTML模板
5.可嵌入单山、注入和測試
優(yōu)點:
1. 模板功能強大豐富碍现,自帶了極其豐富的angular指令。
2. 是一個比較完善的前端框架米奸,包含服務(wù)昼接,模板,數(shù)據(jù)雙向綁定悴晰,模塊化慢睡,路由,過濾器铡溪,依賴注入等所有功能漂辐;
3. 自定義指令,自定義指令后可以在項目中多次使用棕硫。
4. ng模塊化比較大膽的引入了Java的一些東西(依賴注入)髓涯,能夠很容易的寫出可復用的代碼,對于敏捷開發(fā)的團隊來說非常有幫助哈扮。
5. angularjs是互聯(lián)網(wǎng)巨人谷歌開發(fā)纬纪,這也意味著他有一個堅實的基礎(chǔ)和社區(qū)支持。
缺點:
1. angular 入門很容易 但深入后概念很多, 學習中較難理解.
2. 文檔例子非常少, 官方的文檔基本只寫了api, 一個例子都沒有, 很多時候具體怎么用都是google來的, 或直接問misko,angular的作者.
3. 對IE6/7 兼容不算特別好, 就是可以用jQuery自己手寫代碼解決一些.
4. 指令的應(yīng)用的最佳實踐教程少, angular其實很靈活, 如果不看一些作者的使用原則,很容易寫出 四不像的代碼, 例如js中還是像jQuery的思想有很多dom操作.
5. DI 依賴注入 如果代碼壓縮需要顯示聲明.