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

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

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

前言

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

背景

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

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

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

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

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

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

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

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

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

改进?

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

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

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

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

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

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

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

结束了吗?

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

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

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

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

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

巧妙使用 Teleport

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top