成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么Vue(默認情況下)比React性能更好

開發(fā) 前端
React 只將 JSX 編譯為JS,而 Vue 通過提升有效地優(yōu)化了靜態(tài)塊。這種優(yōu)化對具有許多節(jié)點和深層樹狀結構的大頁面是有益的。

本文不是要辯論 Vue 好還是 React 好,而是要看看這兩個框架在低層次上是如何選擇的。

我知道有些開發(fā)者在選擇框架之前會傾向于看基準。然而,這并不是最關鍵的方面,因為99%的性能都來自于你寫的代碼,而不是你使用的框架。

那么,我是如何得出這個結論的呢?

這里選取了三個常見的web應用程序問題,并檢查了Vue和React在每個場景中的響應情況。

項目

這里有一個類似 TODO 的項目,不過這里添加的不是事項而是水果。

圖片

下面是 React 代碼:

圖片

Vue 代碼:

圖片

測試1:靜態(tài)模塊

在第一個測試中,我們將比較 React 和 Vue 是如何編譯靜態(tài)部分的。

先來看看React:

圖片

如上圖所示,在 JSX 中,編譯器是非常簡單的。所有的 JSX 元素都被替換成 React ??的createElement?? 函數。它將在應用程序的每次狀態(tài)更新時重新渲染所有靜態(tài)元素。

再來看看 Vue 中是怎么做的:

圖片

可能看起來有些復雜,但這里注意一下 hoisted_1 變量和 setup 方法。正如我們所看到的,hoisted_1變量包含了我們的靜態(tài)內容,并被定義在 setup 函數之外。

在編譯過程中,Vue檢測所有不依賴于應用程序狀態(tài)的靜態(tài)節(jié)點,并將變量提升到組件設置之外,這樣它就不必在每次渲染后重新生成這些靜態(tài)節(jié)點。

小結

React 只將 JSX 編譯為JS,而 Vue 通過提升有效地優(yōu)化了靜態(tài)塊。這種優(yōu)化對具有許多節(jié)點和深層樹狀結構的大頁面是有益的。

測試2:重新渲染

React 和 Vue 之間的顯著差異在這第二個測試中顯現出來。

當我們在文本輸入中輸入 "TEST "時,React 應用程序的控制臺:

圖片

我們可以看到,MyFruits組件被渲染了五次。

  • 在父組件的第一次渲染時一次
  • 在輸入中每按一次鍵,就有四次(test 的個數)。

再來看看 Vue 的情況:

圖片

MyFruits 組件只渲染了一次。

默認情況下,Vue中的任何孩子組件都是有緩存。只有當它的 props 發(fā)生變化時,它才會被重新渲染。

React 中無論 props是否改變,都會重新渲染。

因此,Vue 中的同等代碼比 React 的性能更強??。

React 是怎么來解決這個問題的?

在React中,開發(fā)者可以選擇通過使用memo helper來啟用 memoization??梢酝ㄟ^下面的代碼來完成:

圖片

然而,這需要額外的代碼來達到相同的性能。

測試 3:計算屬性

在Vue中,一個計算屬性是一個將根據其他屬性而被重新計算糶的的值。例如,一個 hashed password 只有在 password 被改變時才會被重新計算。

在 React 中:

圖片

每次渲染時都會調用 hash 。

在Vue中,只有在使用 hashed 時才會重新執(zhí)行。如果該值在模板中不是必需的,就不會重新執(zhí)行。此外,Vue 隱含地檢測到了依賴關系,只有在 password  改變時才會進行計算。

圖片

這在 React中也是可行的,也也是需要額外的代碼:

圖片

我們需要調用 useMemo 并提供一個依賴數組。此外,React 無法檢測到模板中是否使用了 hashed 變量,并會在第一次渲染時計算 hash 。

這是一個非常簡單的例子,但要考慮復雜的操作。這將極大地影響組件的渲染時間,特別是當計算的屬性在初始渲染時沒有被使用時。

所以 Vue > React?

不,經過上面所有的例子,你可能認為 Vue 比 Reac t的性能更好。但這是錯誤的。事實上,這兩個庫有不同的理念。Vue 是隱式的,而 React 是顯式的。

怎么說?

Vue 是老好人,傾向于將盡可能多的事情自動化,因此開發(fā)者可以專注于業(yè)務邏輯。Vue 默認提供更好的性能。

另一方面,如果我們想開發(fā)更復雜的功能,這也會導致缺乏一些靈活性。如果你沒有真正掌握 Vue組件的生命周期,你可能會花很多時間來調試一些愚蠢的代碼。

另外,React 比較懶,需要開發(fā)者自己動手,不過,這樣也給我們帶來更多的靈活性。但也會多寫些代碼,像上面的三個例子一樣,才能達到與Vue相同的性能。

綜上,如果是新手,可以先從 vue 上手,比較好入手。相比之下,React 適合那些已經有基于組件的框架工作經驗的開發(fā)者。

責任編輯:姜華 來源: 大遷世界
相關推薦

2022-11-10 15:32:29

2015-06-01 06:39:18

JavaJava比C++

2020-11-26 15:30:05

VueReac前端

2013-07-29 14:50:43

API

2015-06-29 14:23:13

JavaC++慢很多

2022-09-13 18:55:09

React組件fromJS

2012-05-11 09:50:49

iOSAndroid移動應用

2014-03-26 10:09:14

指針指針使用

2020-08-23 18:08:29

JavaScript命名參數位置參數

2024-05-20 08:49:07

ArkUI鴻蒙應用開發(fā)

2023-11-23 23:52:06

options請求瀏覽器

2020-02-14 13:53:33

Python 開發(fā)編程語言

2020-07-17 19:31:19

PythonR編程

2010-10-22 17:26:55

SQL Server刪

2023-02-03 08:36:35

2013-09-12 10:41:39

VDI部署

2022-01-19 22:18:56

Vue.jsVue SPA開發(fā)

2022-07-13 15:23:57

Vue fiberreact前端

2019-04-19 11:56:48

框架AI開發(fā)

2021-03-26 09:00:00

開發(fā)框架React
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 看片wwwwwwwwwww| 日本天堂视频在线观看 | 久久一区二区视频 | 伊人二区 | 天天综合日日夜夜 | 免费a网| 天天操夜夜操 | 成人欧美一区二区三区在线观看 | www.亚洲 | 久久久精品视频一区二区三区 | 国产专区免费 | 日韩手机视频 | 久久久成人动漫 | av网站在线播放 | 午夜国产一区 | 欧美亚洲另类丝袜综合网动图 | 日韩免费福利视频 | 国产精品久久久久久一级毛片 | 99re66在线观看精品热 | 国产一区二区电影 | 国产日韩欧美在线 | 国产综合久久 | 在线三级电影 | 国产精品国产精品 | 亚洲欧美国产精品一区二区 | 亚洲成人在线免费 | 亚洲成人网在线 | 在线午夜电影 | 欧美11一13sex性hd | 国产精品永久免费 | 亚洲视频在线看 | 日本三级电影免费观看 | 欧美偷偷 | 成人国产综合 | 中文字幕视频网 | 免费黄色的视频 | 在线播放中文字幕 | 亚洲欧美日韩电影 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 毛片一级网站 | 日本特黄a级高清免费大片 成年人黄色小视频 |