服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

为什么Vue(默认情况下)比React性能更好

日期: 来源:技术胖学程序收集编辑:前端小智

本文不是要辩论 Vue 好还是 React 好,而是要看看这两个框架在低层次上是如何选择的。

我知道有些开发者在选择框架之前会倾向于看基准。然而,这并不是最关键的方面,因为99%的性能都来自于你写的代码,而不是你使用的框架。

那么,我是如何得出这个结论的呢?

这里选取了三个常见的web应用程序问题,并检查了Vue和React在每个场景中的响应情况。

项目

这里有一个类似 TODO 的项目,不过这里添加的不是事项而是水果。

下面是 React 代码:

Vue 代码:

测试1:静态模块

在第一个测试中,我们将比较 React 和 Vue 是如何编译静态部分的。

先来看看React:

如上图所示,在 JSX 中,编译器是非常简单的。所有的 JSX 元素都被替换成 React 的createElement 函数。它将在应用程序的每次状态更新时重新渲染所有静态元素。

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

可能看起来有些复杂,但这里注意一下 hoisted_1 变量和 setup 方法。正如我们所看到的,hoisted_1变量包含了我们的静态内容,并被定义在 setup 函数之外。

在编译过程中,Vue检测所有不依赖于应用程序状态的静态节点,并将变量提升到组件设置之外,这样它就不必在每次渲染后重新生成这些静态节点。

小结

React 只将 JSX 编译为JS,而 Vue 通过提升有效地优化了静态块。这种优化对具有许多节点和深层树状结构的大页面是有益的。

测试2:重新渲染

React 和 Vue 之间的显著差异在这第二个测试中显现出来。

当我们在文本输入中输入 "TEST "时,React 应用程序的控制台:

我们可以看到,MyFruits组件被渲染了五次。

  • 在父组件的第一次渲染时一次
  • 在输入中每按一次键,就有四次(test 的个数)。

再来看看 Vue 的情况:

MyFruits 组件只渲染了一次。

默认情况下,Vue中的任何孩子组件都是有缓存。只有当它的 props 发生变化时,它才会被重新渲染。

React 中无论 props是否改变,都会重新渲染。

因此,Vue 中的同等代码比 React 的性能更强

相关阅读

  • 两行 CSS 提升渲染性能7倍!

  • 喜欢就关注我们吧话不多说,先直接上代码:{ content-visibility: auto; contain-intrinsic-size: 1px 5000px;}就是这两行css代码,添加了以后页面渲染性能将提高大约7倍!为什么
  • 三伏天吃火锅,竟然有这个意思?

  • 元宵节的正确打开方式是啥?除了吃汤圆就是猜灯谜了!看了视频,你是不是也跃跃欲试了?上城区纪委监委与丁兰街道党工委、纪工委特地为大家准备了廉洁灯谜,一起来猜猜!
  • 30分钟吃掉wandb模型训练可视化

  • wandb是"我爱你,大baby"首字母的缩写。顾名思义,她是炼丹师的大宝贝,是炼丹师最爱的炼丹伴侣。公众号算法美食屋后台回复关键词:wandb,获取本教程 notebook源码 和 B站视频演示。
  • 货拉拉 Android 模块化路由框架:TheRouter

  • 点击上方蓝字关注我,知识会给你力量本文作者:张涛-货拉拉TheRouter 是一个 Kotlin 编写,用于 Android 模块化开发的一整套解决方案框架。Github 项目地址与使用文档详见 https:
  • 说回 TheRouter

  • 点击上方蓝字关注我,知识会给你力量❝补充:开源仓库地址:https://github.com/HuolalaTech/hll-wp-therouter-android❞没错,货拉拉开源的路由库 —— TheRouter 是我写的大约在1
  • TheRouter 的跨模块依赖注入实现原理

  • 点击上方蓝字关注我,知识会给你力量本文作者——张涛(货拉拉)TheRouter用于跨模块通信设计的ServiceProvider,核心设计思想是参考了SOA(面向服务架构)的设计方式。具体到 Androi
  • kotlin修炼指南8—集合中的高阶函数

  • 点击上方蓝字关注我,知识会给你力量Kotlin对集合操作类新增了很多快捷的高阶函数操作,各种操作符让很多开发者傻傻分不清,特别是看一些Kotlin的源码或者是协程的源码,各种眼花缭
  • kotlin修炼指南9-Sequence的秘密

  • 点击上方蓝字关注我,知识会给你力量人们经常忽略Iterable和Sequence之间的区别。这是可以理解的,因为即使它们的定义也几乎是相同的。interface Iterable<out T> { operato

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 为什么Vue(默认情况下)比React性能更好

  • 本文不是要辩论 Vue 好还是 React 好,而是要看看这两个框架在低层次上是如何选择的。我知道有些开发者在选择框架之前会倾向于看基准。然而,这并不是最关键的方面,因为99%的性
  • 两行 CSS 提升渲染性能7倍!

  • 喜欢就关注我们吧话不多说,先直接上代码:{ content-visibility: auto; contain-intrinsic-size: 1px 5000px;}就是这两行css代码,添加了以后页面渲染性能将提高大约7倍!为什么
  • 2月才刚开始,我就用Python兼职赚了2w!

  • 朋友们好!先说个好消息,Python圈内一年一度的春季私活接单黄金期现已来临!现在是本季度中,最容易接到爬虫类私活的时期,不仅接单容易,报酬也很高。抓紧机会接私活,一个星期赚上万很