簡單介紹 React Facebook創建的JavaScript UI框架。它支撐著包括Instagram在內的大多數Facebook網站。React與當時流行的jQuery,Backbone.js和Angular 1等框架不同,它的誕生改變了JavaScript的世界。其中最大的變化是React推 ...
簡單介紹
React--Facebook創建的JavaScript UI框架。它支撐著包括Instagram在內的大多數Facebook網站。React與當時流行的jQuery,Backbone.js和Angular 1等框架不同,它的誕生改變了JavaScript的世界。其中最大的變化是React推廣了Virtual DOM(虛擬DOM)並創造了新的語法——JSX,JSX允許開發者在JavaScript中書寫HTML(譯者註:即HTML in JavaScript)。
Vue致力解決的問題與React一致,但卻提供了另外一套解決方案。Vue使用模板系統(弱化的jsx),使其對現有應用的升級更加容易。這是因為模板用的就是普通的HTML,通過Vue來整合現有的系統是比較容易的,不需要整體重構。同時Vue的學習曲線相對react來說更加容易。
相似之處
React與Vue有很多相似之處,如他們都是JavaScript的UI框架,專註於創造前端的富應用。不同於早期的JavaScript框架“功能齊全”,Reat與Vue只有框架的骨架,其他的功能如路由、狀態管理等是框架分離的組件。
- 兩者都是用於創建UI的JavaScript庫;
- 兩者都快速輕便;
- 都有基於組件的架構;
- 都是用虛擬DOM;
- 都可放入單個HTML文件中,或者成為更複雜webpack設置中的模塊;
- 都有獨立但常用的路由器和狀態管理庫;
它們之間的最大區別是Vue通常使用HTML模板文件,而React則完全是JavaScript。Vue有雙向綁定語法糖。
不同點
在Vue組件中,有幾個觀念和React相差比較大,我覺得主要有以下這幾點:
Vue組件分為全局註冊和局部註冊,在react中都是通過import相應組件,然後模版中引用;
props是可以動態變化的,子組件也實時更新,在react中官方建議props要像純函數那樣,輸入輸出一致對應,而且不太建議通過props來更改視圖;
子組件一般要顯示地調用props選項來聲明它期待獲得的數據。而在react中不必需,另兩者都有props校驗機制;
每個Vue實例都實現了事件介面,方便父子組件通信,小型項目中不需要引入狀態管理機制,而react必需自己實現;
使用插槽分發內容,使得可以混合父組件的內容與子組件自己的模板;
多了指令系統,讓模版可以實現更豐富的功能,而React只能使用JSX語法;
Vue增加的語法糖computed和watch,而在React中需要自己寫一套邏輯來實現;
react的思路是all in js,通過js來生成html,所以設計了jsx,還有通過js來操作css,社區的styled-component、jss等;而 vue是把html,css,js組合到一起,用各自的處理方式,vue有單文件組件,可以把html、css、js寫到一個文件中,html提供了模板引擎來處理。
react做的事情很少,很多都交給社區去做,vue很多東西都是內置的,寫起來確實方便一些, 比如 redux的combineReducer就對應vuex的modules, 比如reselect就對應vuex的getter和vue組件的computed, vuex的mutation是直接改變的原始數據,而redux的reducer是返回一個全新的state,所以redux結合immutable來優化性能,vue不需要。
react是整體的思路的就是函數式,所以推崇純組件,數據不可變,單向數據流,當然需要雙向的地方也可以做到,比如結合redux-form,組件的橫向拆分一般是通過高階組件。而vue是數據可變的,雙向綁定,聲明式的寫法,vue組件的橫向拆分很多情況下用mixin。
社區活躍度
從兩者的github表現上來看
可以看出vue的star數量已經是前端框架中最火爆的。從維護上來看,react是facebook在維護,而vue現階段雖然也有了團隊,但主要還是尤雨溪在維護貢獻代碼,並且阿裡巴巴開源的混合式框架weex也是基於vue的,所以我們相信vue未來將會得到更多的人和團隊維護。根據不完全統計,包括餓了麽、簡書、高德、稀土掘金、蘇寧易購、美團、天貓、荔枝FM、房多多、Laravel、htmlBurger等國內外知名大公司都在使用vue進行新項目的開發和舊項目的前端重構工作。
使用vue的公司
根據不完全統計,包括餓了麽、蘇寧易購、美團、天貓、Laravel、htmlBurger等國內外知名大公司都在使用vue進行新項目的開發和舊項目的前端重構工作。
使用react的公司
UI生態
react有material-design,螞蟻金服的ant-design等,vue有餓了麽出品的element以及iview等。
總結
Vue的優勢包括:
- 模板和渲染函數的彈性選擇
- 簡單的語法及項目創建
- 更快的渲染速度和更小的體積
React的優勢包括:
- 更適用於大型應用和更好的可測試性
- 同時適用於Web端和原生App
- 更大的生態圈帶來的更多支持和工具
而實際上,React和Vue都是非常優秀的框架,它們之間的相似之處多過不同之處,並且它們大部分最棒的功能是相通的:
- 利用虛擬DOM實現快速渲染
- 輕量級
- 響應式組件
- 伺服器端渲染
- 易於集成路由工具,打包工具以及狀態管理工具
- 優秀的支持和社區
總結比較速覽
參考文檔
- Vue與React兩個框架的區別和優勢對比http://caibaojian.com/vue-vs-react.html
- Vue.js與React的全面對比 https://blog.csdn.net/CystalVon/article/details/78428036