当前位置:首页 > 科技  > 软件

一个超冷门的 Vue3 内置组件,帮我优化了66%的性能!

来源: 责编: 时间:2024-02-29 14:41:15 266观看
导读前言大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~背景最近项目中有一个页面,是之前的老页面,页面中的内容其实就是一个 Tabs 组件,有三个 Tab,分别展示不同的内容,但是也有共

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~GDv28资讯网——每日最新资讯28at.com

背景

最近项目中有一个页面,是之前的老页面,页面中的内容其实就是一个 Tabs 组件,有三个 Tab,分别展示不同的内容,但是也有共同内容,那就是共同都有一个一个报表组件GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

下面是大致的代码展示如下,为了方便大家阅读吗,我把代码简化了GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

Chart.vue中会进行大量的请求,这里我就直接简单模拟一下了GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

但是当我阅读到这一段旧代码时,我就觉得不太妙,这代码这么写,显然是没有考虑到性能问题,我们可以切换 Tab1 -> Tab2 -> Tab3 ,会发现 Chart.vue 请求了三次!!!GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

但是其实只需要请求一次就够了,因为其实都是一样的数据、一样的组件,并且 Chart.vue 内部的请求其实是很多个的,这样就大大浪费了浏览器资源GDv28资讯网——每日最新资讯28at.com

改进?

其实很多人第一时间就是想到了,我们可以只请求一次,然后让这三个 Chart 共用同一份数据,这样做就能保证只请求一次了GDv28资讯网——每日最新资讯28at.com

确实,这样做大大提升了性能,大致的代码如下,也就是把请求放在 Index 中去做,然后把数据传给三个 ChartGDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

Chart 中只需要接收,并渲染即可GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

现在切换 Tab1 -> Tab2 -> Tab3,发现确实只请求了一次了,这对于这个页面,简直是很大的提升!GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

结束了吗?

其实 Chart 内部拿到数据之后,会拿着数据去渲染很多的东西(这里我简化了而已,其实很多的)。GDv28资讯网——每日最新资讯28at.com

刚刚我们只是保证了请求是一次,但是我们并没有保证渲染是一次哦~我们可以给 Chart 的 onMounted 中加个打印GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

切换 Tab1 -> Tab2 -> Tab3,可以看到总共渲染了三次,这其实也降低了页面的性能,理想是只渲染一次即可GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

巧妙使用 Teleport

也就是,我需要做到只渲染一次 Chart,但是需要渲染到不同的三个 Tab 中去~GDv28资讯网——每日最新资讯28at.com

那就只能是动态地去渲染了,根据选择不同的 Tab,去决定 Chart 渲染到哪个 Tab 下了GDv28资讯网——每日最新资讯28at.com

这时候我就想到了 Teleport 了,这是一个 Vue3 提供的 全局组件,类似于一个传送门,能把一个 DOM 节点渲染到另一个 DOM 节点上GDv28资讯网——每日最新资讯28at.com

改进后的代码如下GDv28资讯网——每日最新资讯28at.com

图片图片GDv28资讯网——每日最新资讯28at.com

现在切换 Tab1 -> Tab2 -> Tab3,可以看到GDv28资讯网——每日最新资讯28at.com

  • 请求只一次
  • 渲染只一次

真是太妙了!!!GDv28资讯网——每日最新资讯28at.com

图片 图片 GDv28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-75321-0.html一个超冷门的 Vue3 内置组件,帮我优化了66%的性能!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Java的函数式接口编程示例

下一篇: 是否还记得SpringMVC中的@MatrixVariable注解?

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 3699元!iQOO Neo8 Pro顶配版今日首销:1TB UFS 4.0同价位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更是首发搭载了联发科天玑9200+旗舰
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top