react和vue有許多相似之處,他們都有:
1.使用虛擬DOM
2.提供了響應式(reactive)和組件化(composable)的視圖組件
3.將注意力集中保持在核心庫,而將其他功能如路由和全局狀態管理交給相關的庫
4.react更豐富的生態系統
性能
vue的虛擬DOM實現相對更為輕量一些。
優化
在react應用中,當某個組件的狀態發生變化時,它會以該組件為根,重新渲染整個組件子樹
在VUE應用中,組件的依賴是在渲染過程中自動追蹤的,所以系統能精確知曉哪個組件確實需要被重渲染,VUE這個特點使得開發者不再需要考慮此類優化,從而能夠更好的專注於應用本身。
HTML&CSS
在react中,一切都是javascript,不僅僅時html可以用jsx表達,頁可以將css納入javascript中處理,這類有其優點,
JSX VS Templates
在react中,所有組件渲染功能依靠JSX,JSX是使用xml語法編寫javascript的一種語法糖
JSX優勢:
可以使用完整的編程語言javascript功能來構建你的視圖頁面,比如你可以使用臨時變量,js自帶的流程控制,以及直接引用當前JS作用域中的值等等
開發工具對JS的支持相比現在有可用的其它VUE模塊還時比較先進的,比如linting,類型檢查,編輯器的自動完成。
規模
向上擴展
VUE和React都提供了強大的路由來應對大型應用。react社區在狀態管理方面非常有創新精神(比哦如flux,redux),而這些狀態管理模式甚至redux本身頁可以非常容易集成在VUE應用中,VUE更進一步地采用了這種模式(Vuex)
向下擴展
react學習曲線陡峭需要知道JSX,ES2015,構建系統。VUE向上擴展好比react一樣,VUE向下擴展就類似於jquery
angularJS VS VUE
復雜性
在API與設計兩方面上VUE.JS都比angularJS簡單得多
靈活性和模塊化
Vue.js 是一個更加靈活開放的解決方案。它允許你以希望的方式組織應用程序,而不是在任何時候都必須遵循 AngularJS 制定的規則,這讓 Vue 能適用於各種項目。我們知道把決定權交給你是非常必要的。
這也就是為什么我們提供 webpack template,讓你可以用幾分鍾,去選擇是否啟用高級特性,比如熱模塊加載、linting、CSS 提取等等。
數據綁定
指令與組件
在 Vue 中指令和組件分得更清晰。指令只封裝 DOM 操作,而組件代表一個自給自足的獨立單元——有自己的視圖和數據邏輯。在 AngularJS 中兩者有不少相混的地方。
Vue 有更好的性能,並且非常非常容易優化,因為它不使用臟檢查。
在 AngularJS 中,當 watcher 越來越多時會變得越來越慢,因為作用域內的每一次變化,所有 watcher 都要重新計算。並且,如果一些 watcher 觸發另一個更新,臟檢查循環 (digest cycle) 可能要運行多次。AngularJS 用戶常常要使用深奧的技術,以解決臟檢查循環的問題。有時沒有簡單的辦法來優化有大量 watcher 的作用域。
Vue 則根本沒有這個問題,因為它使用基於依賴追蹤的觀察系統並且異步隊列更新,所有的數據變化都是獨立觸發,除非它們之間有明確的依賴關系。
有意思的是,Angular 和 Vue 用相似的設計解決了一些 AngularJS 中存在的問題。
AngularJS 使用雙向綁定,Vue 在不同組件間強制使用單向數據流。這使應用中的數據流更加清晰易懂。