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

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

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

前言

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

背景

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

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

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

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

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

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

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

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

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

改进?

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

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

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

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

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

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

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

结束了吗?

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

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

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

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

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

巧妙使用 Teleport

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 三星获批量产iPhone 15全系屏幕:苹果史上最惊艳直屏

    按照惯例,苹果将继续在今年9月举办一年一度的秋季新品发布会,有传言称发布会将于9月12日举行,届时全新的iPhone 15系列将正式与大家见面,不出意外的话
  • 三星Galaxy Z Fold5官方渲染图曝光:13.4mm折叠厚度依旧感人

    据官方此前宣布,三星将于7月26日在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
Top