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

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

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

前言

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

背景

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

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

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

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

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

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

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

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

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

改进?

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

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

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

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

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

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

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

结束了吗?

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

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

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

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

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

巧妙使用 Teleport

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
Top