一、區別:?
1.?語法
Vue采用自己特有的模板語法;
React是單向的,采用jsx語法創建react元素。
2.監聽數據變化的實現原理不同
Vue2.0 通過Object.defineproperty()方法的getter/setter屬性, 實現數據劫持, 每次修改完數據會觸發diff算法(雙端對比)
React默認是通過shouldComponentUpdata生命周期來決定是否需要渲染更新, 再觸發它的diff算法(比較引用)如果不優化可能導致大量不必要的VDOM的重新渲染。
為什么React不精確監聽數據變化呢?這是因為Vue和React設計理念上的區別,Vue使用的是可變數據,而React更強調數據的不可變,兩者沒有好壞之分,Vue更加簡單,而React構建大型應用的時候更好。
3.數據綁定(原理)
Vue是雙向綁定的,它最核心的功能有2個: 1. 響應式的數據綁定系統; 2. 組件系統
二、優缺點(待整理)
Vue:
簡單、快速、強大、對模塊友好,但不支持IE8。
1. 簡單:官方文檔很清晰,比 Angular 簡單易學。
2. 快速:異步批處理方式更新 DOM。
3. 組合:用解耦的、可復用的組件組合你的應用程序。
4. 緊湊:~18kb min+gzip,且無依賴。
5. 強大:表達式 & 無需聲明依賴的可推導屬性 (computed properties)。
6. 對模塊友好:可以通過 NPM、Bower 或 Duo 安裝,不強迫你所有的代碼都遵循 Angular 的各種規定,使用場景更加靈活。
React:
速度快、跨瀏覽器兼容、模塊化;
但學習曲線陡峭,需要深入的知識來構建應用程序。
1. 速度快:在UI渲染過程中,React通過在虛擬DOM中的微操作來實現對實際DOM的局部更新。
2. 跨瀏覽器兼容:虛擬DOM幫助我們解決了跨瀏覽器問題,它為我們提供了標準化的API,甚至在IE8中都是沒問題的。
3. 模塊化:為你程序編寫獨立的模塊化UI組件,這樣當某個或某些組件出現問題是,可以方便地進行隔離。
4. 單向數據流:Flux是一個用于在JavaScript應用中創建單向數據層的架構,它隨著React視圖庫的開發而被Facebook概念化。
5. 同構、純粹的javascript:因為搜索引擎的爬蟲程序依賴的是服務端響應而不是JavaScript的執行,預渲染你的應用有助于搜索引擎優化。
6. 兼容性好:比如使用RequireJS來加載和打包,而Browserify和Webpack適用于構建大型應用。它們使得那些艱難的任務不再讓人望而生畏。
React本身只是一個V而已,并不是一個完整的框架,所以如果是大型項目想要一套完整的框架的話,基本都需要加上ReactRouter和Flux才能寫大型應用。
陡峭的學習曲線:由于復雜的設置過程,屬性,功能和結構,它需要深入的知識來構建應用程序。
react更適合構建大型應用, 為什么呢?
1. 通過 React 構建組件,使得代碼更加容易得到復用,能夠很好的應用在大項目的開發中。