日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

一文總結Vue和React的異同

瀏覽:227日期:2022-06-10 13:05:16
目錄
  • 相同點
  • 不同點
    • 1. 核心思想不同
      • 1.1 核心思想不同導致寫法差異
      • 1.2 核心思想不同導致api差異
      • 1.3 核心思想不同導致社區差異
      • 1.4 核心思想不同導致未來升級方向不同
    • 2. 組件實現不同
      • 3. 響應式原理不同
        • 4. diff算法不同
          • 5. 事件機制不同

          相同點

          Vue和React相同點非常多:

          • 都使用Virtural DOM
          • 都使用組件化思想,流程基本一致
          • 都是響應式
          • 都有成熟的社區,都支持服務端渲染

           Vue和React實現原理和流程基本一致,都是使用Virtual DOM + Diff算法。不管是Vue的template模板 + options api寫法,還是React的Class或者Function(js 的class寫法也是function函數的一種)寫法,底層最終都是為了生成render函數,render函數執行返回VNode(虛擬DOM的數據結構,本質上是棵樹)。當每一次UI更新時,總會根據render重新生成最新的VNode,然后跟以前緩存起來老的VNode進行比對,再使用Diff算法(框架核心)去真正更新真實DOM(虛擬DOM是JS對象結構,同樣在JS引擎中,而真實DOM在瀏覽器渲染引擎中,所以操作虛擬DOM比操作真實DOM開銷要小的多)。
          Vue和React通用流程:vue template/react jsx -> render函數 -> 生成VNode -> 當有變化時,新老VNode diff -> diff算法對比,并真正去更新真實DOM。
          核心還是Virtual DOM,為什么Vue和React都選擇Virtual DOM(React首創VDOM,Vue2.0開始引入VDOM)?,個人認為主要有以下幾點:

          • 減少直接操作DOM。框架給我們提供了屏蔽底層dom書寫的方式,減少頻繁的整更新dom,同時也使得數據驅動視圖
          • 為函數式UI編程提供可能(React核心思想)
          • 可以跨平臺,渲染到DOM(web)之外的平臺。比如ReactNative,Weex

          不同點

          1. 核心思想不同

          Vue早期定位是盡可能的降低前端開發的門檻(這跟Vue作者是獨立開發者也有關系)。所以Vue推崇靈活易用(漸進式開發體驗),數據可變,雙向數據綁定(依賴收集)。

          React早期口號是Rethinking Best Practices。背靠大公司Facebook的React,從開始起就不缺關注和用戶,而且React想要做的是用更好的方式去顛覆前端開發方式(事實上跟早期jquery稱霸前端,的確是顛覆了)。所以React推崇函數式編程(純組件),數據不可變以及單向數據流。函數式編程最大的好處是其穩定性(無副作用)和可測試性(輸入相同,輸出一定相同),所以通常大家說的React適合大型應用,根本原因還是在于其函數式編程。
          由于兩者核心思想的不同,所以導致Vue和React許多外在表現不同(從開發層面看)。

          1.1 核心思想不同導致寫法差異

          Vue推崇template(簡單易懂,從傳統前端轉過來易于理解)、單文件vue。而且雖然Vue2.0以后使用了Virtual DOM,使得Vue也可以使用JSX(bebel工具轉換支持),但Vue官方依然首先推薦template,這跟Vue的核心思想和定位有一定關系。

          React推崇JSX、HOC、all in js。

          1.2 核心思想不同導致api差異

          Vue定位簡單易上手,基于template模板 + options API,所以不可避免的有較多的概念和api。比如template模板中需要理解slot、filter、指令等概念和api,options API中需要理解watch、computed(依賴收集)等概念和api。
          React本質上核心只有一個Virtual DOM + Diff算法,所以API非常少,知道setState就能開始開發了。

          1.3 核心思想不同導致社區差異

          由于Vue定義簡單易上手,能快速解決問題,所以很多常見的解決方案,是Vue官方主導開發和維護。比如狀態管理庫Vuex、路由庫Vue-Router、腳手架Vue-CLI、Vutur工具等。屬于那種大包大攬,遇到某類通用問題,只需要使用官方給出的解決方案即可。

          React只關注底層,上層應用解決方案基本不插手,連最基礎的狀態管理早期也只是給出flow單向數據流思想,大部分都丟給社區去解決。比如狀態管理庫方面,有redux、mobx、redux-sage、dva等一大堆(選擇困難癥犯了),所以這也造就了React社區非常繁榮。同時由于有社區做上層應用解決方案,所以React團隊有更多時間專注于底層升級,比如花了近2年時間把底層架構改為Fiber架構,以及創造出React Hooks來替換HOC,Suspense等。 更多框架設計思想可看 尤雨溪 - 在框架設計中尋求平衡 (opens new window)。

          1.4 核心思想不同導致未來升級方向不同

          核心思想不同,決定了Vue和React未來不管怎么升級變化,Vue和React考慮的基本盤不變。
          Vue依然會定位簡單易上手(漸進式開發),依然是考慮通過依賴收集來實現數據可變。這點從Vue3核心更新內容可以看到:template語法基本不變、options api只增加了setup選項(composition api)、基于依賴收集(Proxy)的數據可變。更多Vue3具體更新內容可看筆者總結 Vue3設計思想 (opens new window)或者 尤雨溪 - 聊聊 Vue.js 3.0 Beta 官方直播 (opens new window)。
          React的函數式編程這個基本盤不會變。React核心思想,是把UI作為Basic Type,比如String、Array類型,然后經過render處理,轉換為另外一個value(純函數)。從React Hooks可以看出,React團隊致力于組件函數式編程,(純組件,無class組件),盡量減少副作用(減少this,this會引起副作用)。

          2. 組件實現不同

          Vue源碼實現是把options掛載到Vue核心類上,然后再new Vue({options})拿到實例(vue組件的script導出的是一個掛滿options的純對象而已)。所以options api中的this指向內部Vue實例,對用戶是不透明的,所以需要文檔去說明this.s l o t 、 t h i s . slot、this.slot、this.xxx這些api。另外Vue插件都是基于Vue原型類基礎之上建立的,這也是Vue插件使用Vue.install的原因,因為要確保第三方庫的Vue和當前應用的Vue對象是同一個。

          React內部實現比較簡單,直接定義render函數以生成VNode,而React內部使用了四大組件類包裝VNode,不同類型的VNode使用相應的組件類處理,職責劃分清晰明了(后面的Diff算法也非常清晰)。React類組件都是繼承自React.Component類,其this指向用戶自定義的類,對用戶來說是透明的。

          3. 響應式原理不同

          Vue

          Vue依賴收集,自動優化,數據可變。
          Vue遞歸監聽data的所有屬性,直接修改。
          當數據改變時,自動找到引用組件重新渲染。

          React

          React基于狀態機,手動優化,數據不可變,需要setState驅動新的State替換老的State。
          當數據改變時,以組件為根目錄,默認全部重新渲染

          4. diff算法不同

          兩者流程思維上是類似的,都是基于兩個假設(使得算法復雜度降為O(n)):

          • 不同的組件產生不同的 DOM 結構。當type不相同時,對應DOM操作就是直接銷毀老的DOM,創建新的DOM。
          • 同一層次的一組子節點,可以通過唯一的 key 區分。

          但兩者源碼實現上有區別:
          Vue基于snabbdom庫,它有較好的速度以及模塊機制。Vue Diff使用雙向鏈表,邊對比,邊更新DOM。
          React主要使用diff隊列保存需要更新哪些DOM,得到patch樹,再統一操作批量更新DOM。

          5. 事件機制不同

          Vue

          • Vue原生事件使用標準Web事件
          • Vue組件自定義事件機制,是父子組件通信基礎
          • Vue合理利用了snabbdom庫的模塊插件

          React

          • React原生事件被包裝,所有事件都冒泡到頂層document監聽,然后在這里合成事件下發。基于這套,可以跨端使用事件機制,而不是和Web
            DOM強綁定。
          • React組件上無事件,父子組件通信使用props

          以上就是一文總結Vue和React的異同的詳細內容,更多關于Vue和React的異同的資料請關注其它相關文章!

          標簽: JavaScript
          日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
          91偷拍一区二区三区精品| 日本在线不卡视频| 欧美成人国产| 欧美综合社区国产| 久久一区二区三区喷水| 欧美日韩1区| 免费欧美日韩| av综合电影网站| 国产精品激情| 免费成人av在线播放| 欧美黄色网页| 久久精品亚洲一区二区| 亚洲人亚洲人色久| 久久久国产精品一区二区中文| 蜜桃视频欧美| 日韩中文首页| 色欧美自拍视频| 免费亚洲婷婷| 久久精品99国产精品日本| 亚洲一区网站| 亚洲综合国产| 欧美一区=区| 婷婷激情久久| 婷婷国产精品| 9久re热视频在线精品| 久久天堂av| 久久国产精品成人免费观看的软件| 国产不卡人人| 久久婷婷激情| 久久国产精品免费精品3p| 9色精品在线| 午夜a一级毛片亚洲欧洲| 亚洲伊人影院| 91精品日本| 国产欧美在线观看免费| 国产精品久久久网站| 国产精品久av福利在线观看| 国产一区二区久久久久| 中文字幕在线高清| 欧美久久精品一级c片| 日韩视频久久| 88久久精品| 国产成人精品免费视| 久久精选视频| 精品一区免费| 日本aⅴ精品一区二区三区 | 欧美天堂亚洲电影院在线观看| 91精品啪在线观看国产18| 一本一道久久a久久精品蜜桃| 鲁大师成人一区二区三区 | 夜夜嗨av一区二区三区网站四季av| 精品亚洲美女网站| 香蕉久久一区| 中文在线免费视频| 亚洲综合国产| 久久亚洲国产精品尤物| 欧美日韩一区二区综合| 日韩国产一区二| 久久精品91| 国产精品15p| 天堂网在线观看国产精品| 中文无码日韩欧| 久久久久久夜| 视频一区二区三区中文字幕| 国产在线观看91一区二区三区| 老牛影视一区二区三区| 欧美xxxx中国| 青青草91视频| 亚州av乱码久久精品蜜桃| 97久久超碰| 午夜国产欧美理论在线播放| 精品一区二区男人吃奶 | 91精品丝袜国产高跟在线| 国产99亚洲| caoporn视频在线| 国产精品羞羞答答在线观看| 三级欧美在线一区| 日韩av免费| 97精品一区二区| 欧美精品第一区| 国产亚洲一区| 伊人久久婷婷| 在线一区视频观看| 成人国产精品一区二区免费麻豆| 日韩av中文在线观看| 久久福利毛片| 老鸭窝毛片一区二区三区| 91久久在线| 一区免费在线| 日韩欧美精品综合| 精品黄色一级片| 久久国产精品免费一区二区三区 | 亚洲自拍另类| 午夜久久一区| 国产免费成人| 亚洲精品麻豆| 国产精品白浆| 麻豆成全视频免费观看在线看| 岛国精品一区| 99热精品久久| 午夜欧美视频| 日韩精品亚洲一区二区三区免费| 日韩精选在线| 日本一区二区三区视频在线看| 日韩一二三区在线观看| 国产日产精品_国产精品毛片| 国产精品久久久久久久久久白浆| 国产伦精品一区二区三区视频| 日韩精品一区二区三区中文| 欧美日韩一区二区三区不卡视频| 婷婷综合电影| 国产一区2区| 91久久久久| 国产极品嫩模在线观看91精品| 免费看一区二区三区| 蜜桃av在线播放| 亚洲视频播放| 日韩在线观看一区| 亚洲人成毛片在线播放女女| 国产经典一区| 欧美日韩高清| 欧美在线首页| av资源新版天堂在线| 蜜臀av亚洲一区中文字幕| 久久久亚洲一区| 日韩高清在线不卡| 99精品在线观看| 欧美经典一区| 日韩欧美激情| 国产亚洲一级| 精品国产美女a久久9999| 国产精品美女午夜爽爽| 亚洲一区二区动漫| 91日韩免费| 久久精品国产亚洲aⅴ| 亚洲综合婷婷| 欧美久久精品一级c片| 色婷婷综合网| 国产精品久久久久77777丨| 99视频在线精品国自产拍免费观看| 日韩成人免费| 久久一区亚洲| 国产精一区二区| 国产精品一区二区三区美女| 久久不卡国产精品一区二区| 日韩高清电影一区| 亚洲另类视频| 麻豆9191精品国产| 91久久视频| 91精品亚洲| 蜜臀国产一区二区三区在线播放| 欧美日韩国产探花| 在线国产一区| 成人免费电影网址| 日韩精品影视| 欧美日韩国产亚洲一区| 天堂av一区| 国产欧美一区二区三区国产幕精品| 日本不卡不码高清免费观看| 日韩中文字幕在线一区| 日韩和欧美一区二区| 欧美另类中文字幕| 日韩不卡手机在线v区| 国产精选在线| 久久一级电影| 美女91精品| 久久精品99国产精品| 国产精品一区二区三区www| 91精品在线免费视频| 欧美91在线|欧美| 日韩欧美午夜| 亚洲作爱视频| 欧美日韩一区二区三区四区在线观看 | 久久精品 人人爱| 日本a级不卡| 在线一区视频| 国产伦一区二区三区| 日韩深夜视频| 午夜在线视频观看日韩17c| 日韩精品电影一区亚洲| jizzjizz中国精品麻豆| 日韩欧美另类中文字幕| 国产91在线播放精品| 亚洲一区二区毛片| 精品99在线| 四虎精品永久免费| 欧美精品导航| 亚洲日本在线观看视频| 成人午夜网址| 亚洲精品综合| 日韩美女一区二区三区在线观看| 在线亚洲欧美| 国产成人77亚洲精品www| 国产精品99久久久久久董美香| 天堂资源在线亚洲| 国产精品久久久久久av公交车| 免费视频久久| 久久久久蜜桃| 麻豆一区二区三| 丰满少妇一区|