react16常見api以及原理剖析

a1322674015發表於2019-09-24

Vue 與 React 兩個框架的粗略區別對比

Vue 的優勢包括:

  1. 模板和渲染函式的彈性選擇
  2. 簡單的語法及專案建立
  3. 更快的渲染速度和更小的體積

React 的優勢包括:

  1. 更適用於大型應用和更好的可測試性
  2. 同時適用於 Web 端和原生 App
  3. 更大的生態圈帶來的更多支援和工具

相似之處
React 與 Vue 有很多相似之處,React 和 Vue 都是非常優秀的框架,它們之間的相似之處多過不同之處,並且它們大部分最棒的功能是相通的:如他們都是 JavaScript 的 UI 框架,專注於創造前端的富應用。不同於早期的 JavaScript 框架“功能齊全”,Reat 與 Vue 只有框架的骨架,其他的功能如路由、狀態管理等是框架分離的元件。

  • 兩者都是用於建立 UI 的 JavaScript 庫;
  • 兩者都快速輕便; 都有基於元件的架構;
  • 都是用虛擬 DOM;
  • 都可放入單個 HTML 檔案中,或者成為更復雜 webpack 設定中的模組;
  • 都有獨立但常用的路由器和狀態管理庫;
  • 它們之間的最大區別是 Vue 通常使用 HTML 模板檔案,而 React 則完全是 JavaScript。Vue 有雙向繫結語法糖。

不同點

  • 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。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946034/viewspace-2658131/,如需轉載,請註明出處,否則將追究法律責任。

相關文章