vue
簡介:漸進式 JavaScript 框架
來源:最初由 Evan You (尤雨溪)于2014年開發。Evan You之前在Google研究過AngularJS,并提取了Angular的部分特性以提供一個更輕量級的框架
版本:
vue 1x:2014年2月發布;Vue.js的第一個正式版本;核心:直接操作DOM 并且支持可組合的視圖組件等。
vue 2x: 2016年9月發布;Vue.js的第二個主要版本; 核心: 支持虛擬DOM并且提供了新的語法和指令等。
vue 3x: 2020年9月發布; Vue.js的最新版本; 核心:對Vue全新的響應式API的升級并且很多特性的增強
鏈接: vue官網
react
簡介:用于構建 Web 和原生交互界面的庫
來源:起源于 Facebook 的內部項目;于2013年5月開源
鏈接: react中文官網
共同點
- 組件化開發
- 數據驅動視圖
- 虛擬DOM機制
vue 和 react都采用了虛擬DOM機制來進行高效的更新界面
區別
- 模板語法不同
react 推薦 jsx 語法,將 html 和 js 結合在一起。
vue 推薦 模板語法,html 、 css 、js寫在同一個文件,但不同于react混在一起,它們各有各的家 - 數據驅動不同
react 是單向數據流 ( mvc架構)
vue 是雙向數據綁定(mvvm架構);vue2通過 數據劫持 并結合 發布-訂閱模式 的方法來實現; vue3 通過 proxy 實現; - diff算法不同
react diff算法中 先比較節點 如果不同類型 就拆卸然后新建,若節點類型相同 則 比對及更新有改變的屬性
vue diff算法中 比較節點 如果不同類型 就拆卸然后新建,若節點類型相同但屬性不同也會被拆掉重建,react只會修改屬性 - 還有一些其他更細粒度的不同,如下圖
vue3 vs react