当前位置: 首页 > article >正文

Vue3 性能优化实践

Vue3 性能优化实践 | 源码解析系列 6.4一引言性能优化是前端开发中的重要课题Vue3虽然相比Vue2有了显著的性能提升但在实际应用中仍需要开发者注意一些性能问题。本文将分享Vue3性能优化的最佳实践帮助开发者构建高性能的Vue应用。二、响应式优化2.1 避免不必要的响应式// 避免将大型对象全部设为响应式// 不推荐conststatereactive(largeDataSource)// 推荐使用shallowRefconststateshallowRef(largeDataSource)state.valuenewData// 整体替换触发更新2.2 使用shallowRef// 大型数组使用shallowRefimport{shallowRef,triggerRef}fromvueconstlistshallowRef([])// 不触发更新list.value.push(item)// 触发更新list.value[...list.value,item]// 或triggerRef(list)2.3 readonly保护数据// 只读数据使用readonlyimport{readonly,reactive}fromvueconststatereactive({user:{name:Vue}})// 保护嵌套对象constreadOnlyUserreadonly(state.user)三、computed优化3.1 合理使用computed// 推荐使用计算属性constdoubledcomputed(()state.count*2)// 避免在computed中修改状态// 错误示例constbadcomputed((){state.count// 不要这样做returnstate.count})3.2 避免过度使用computed// 简单计算不需要computed// 不推荐constformattedDatecomputed((){returnnewDate(date.value).toLocaleDateString()})// 推荐方法functionformatDate(){returnnewDate(date.value).toLocaleDateString()}四、列表渲染优化4.1 使用稳定的key// 推荐使用稳定ID作为keyli v-foritem in items:keyitem.id// 避免使用index作为keyli v-for(item, index) in items:keyindex4.2 v-memo优化// v-memo跳过不必要的更新li v-foritem in items:keyitem.idv-memo[item.selected]{{item.content}}/li4.3 虚拟列表// 大列表使用虚拟滚动// 使用vue-virtual-scroller等库import{VirtualScroller}fromvue-virtual-scrollerVirtualScroller:itemslargeList:item-size50template #default{ item }ListItem:itemitem//template/VirtualScroller五、组件优化5.1 懒加载组件// 路由懒加载constroutes[{path:/about,component:()import(./About.vue)}]// 条件懒加载constHeavyComponentdefineAsyncComponent(()import(./Heavy.vue))5.2 v-show vs v-if// 频繁切换使用v-showModal v-showshow/// 条件很少改变使用v-ifAdminPanel v-ifisAdmin/5.3 KeepAlive缓存// 缓存不常更新的组件KeepAlivecomponent:iscurrentTab//KeepAlive// 排除不需要缓存的KeepAlive:exclude[UserEdit]component:iscurrentTab//KeepAlive六、网络请求优化6.1 避免请求风暴// 防抖import{debounce}fromlodash-esconstdebouncedSearchdebounce(search,300)// 节流import{throttle}fromlodash-esconstthrottledScrollthrottle(handleScroll,100)6.2 请求缓存// 使用useFetch或SWRimportuseFetchfromvueuse/core/useFetchconst{data}useFetch(/api/data,{// 缓存5分钟afterCache:(data)Date.now()5*60*1000})七、样式优化7.1 样式穿透// 避免使用scoped穿透// 不推荐style scoped::v-deep.external-class{}/style// 推荐使用CSS模块或全局样式7.2 动态样式// 推荐使用静态classdivclassstatic-class:class{ active: isActive }// 避免大量动态stylediv:stylecomplexStyleObject八、打包优化8.1 Tree Shaking// 按需引入import{ref,computed}fromvue// 不引入不需要的8.2 Code Splitting// 动态导入constAsyncComponent()import(./Async.vue)// 路由级别code splitting// vue-router自动支持8.3 CDN引入// vite.config.jsexportdefault{build:{rollupOptions:{external:[vue,vue-router,pinia]}}}九、调试优化9.1 性能监控// 使用Vue Devtools// 开发环境分析性能// 使用performance APIperformance.mark(start)// 执行代码performance.mark(end)performance.measure(duration,start,end)9.2 生产环境优化// 生产环境关闭devtoolsimport{configurePerformance}fromvueif(!import.meta.env.DEV){configurePerformance()}十、总结Vue3性能优化涉及多个方面响应式系统优化、列表渲染优化、组件懒加载、网络请求优化、打包优化等。遵循这些最佳实践可以显著提升Vue应用的性能构建更流畅的用户体验。参考资料Vue3性能指南https://vuejs.org/guide/best-practices/performance.htmlVue3文档https://vuejs.org/

相关文章:

Vue3 性能优化实践

Vue3 性能优化实践 | 源码解析系列 6.4一,引言 性能优化是前端开发中的重要课题,Vue3虽然相比Vue2有了显著的性能提升,但在实际应用中仍需要开发者注意一些性能问题。本文将分享Vue3性能优化的最佳实践,帮助开发者构建高性能的Vue…...

大规模驱动企业 AI:Elastic 与 NVIDIA cuVS 集成

作者:来自 Elastic Brian BergholmRachael WadeHubert GrzesiekAleta Hubbell 无缝向量化高容量数据,并通过 GPU 加速向量搜索的新黄金标准加快生产上线时间。 总结 Elastic 与 NVIDIA 合作推出了由 NVIDIA cuVS 提供支持的 GPU 加速向量索引。集成到 NV…...

基于stc单片机电动车多用户充电设计(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T0942204C设计简介:本设计是基于stc单片机电动车多用户充电设计,主要实现以下功能:1.通过3个继电器控制电动车充电的开关…...

问卷设计:从“手工匠人”到“书匠策AI智造”的华丽转身

在学术研究的广袤天地里,问卷设计宛如一座桥梁,连接着研究者的思考与被调查者的反馈。然而,传统的问卷设计过程,往往像是一位手工匠人在精心雕琢一件艺术品,虽然细致入微,却也耗时费力,且容易受…...

FunASR:几行代码搞定语音识别全流程的开源工具包,GitHub已获15.2k Star!

导读语音识别(ASR)是人工智能落地最广泛的方向之一,但学术界的前沿模型与工业界的实际部署之间一直存在距离。阿里达摩院开源的 FunASR,正是为弥合这一差距而生。它提供基于大规模工业语料训练的预训练模型,支持训练、…...

Comsol 探索变质量注浆理论:压力与沉积颗粒、渗透率的奇妙关联

comsol变质量注浆理论,根据魏建平《裂隙煤体注浆浆液扩散规律及变质量渗流模型研究》,考虑不同注浆压力,进行了不同压力下的注浆封堵模拟,沉积颗粒浓度随着注浆压力增大会变大,渗透率负相关。最近在研究注浆相关的课题…...

神州路由器vlan 10访问电信,vlan 20访问移动的配置

SWA配置: CS6200-28X-Pro> CS6200-28X-Pro>ena CS6200-28X-Pro#conf CS6200-28X-Pro(config)#vlan 10;20;100;1017;1018 CS6200-28X-Pro(config)#int vlan 10 CS6200-28X-Pro(config-if-vlan10)#ip add 192.168.10.254 255.255.255.0 CS6200-28X-Pro(config-if-vlan10…...

SQL优化全攻略:从索引设计到执行计划的深度解析

SQL优化全攻略:从索引设计到执行计划的深度解析 在数据爆炸的时代,一条低效的SQL查询可能拖垮整个系统。本文通过索引策略示例、查询优化案例及Explain工具对比,为你揭开SQL优化的神秘面纱,实现从“慢查询”到“毫秒级响应”的质变…...

微电网分层控制与二次控制策略下的顶刊复现:事件触发控制图与模型研究

微电网分层控制,二次控制,顶刊复现,有事件触发控制图和模型微电网的二次控制就像给系统装了个智能调节器,传统的一次控制扛得住电压频率的瞬时波动,但真要玩长期稳定还得靠二次层出手。最近复现某顶刊的模型时发现&…...

PCB壳状结构-硬件一体化设计革命性突破

做过硬件量产的工程师都懂,传统硬件生产有一个绕不开的“繁琐流程”:先设计平面PCB,完成电路布线与元器件贴片,再单独开模做塑料或金属外壳,后期通过螺丝、卡扣将PCB与外壳组装成型。这套模式沿用了数十年,…...

FreeRTOS内部机制(二)

文章目录FreeRTOS内部机制(二)3.队列(Queue)3.1队列的核心:关中断、环形缓冲区、链表3.1.1怎么互斥访问数据3.1.2 怎么传递数据?3.1.3 怎么休眠/唤醒3.2操作示例3.2.1创建队列3.2.2读队列3.2.3写队列4.信号量(semaphore)4.1优先级…...

python-flask新能源汽车租赁管理系统的设计与实现_django pycharm vue

目录技术栈选择系统模块设计开发流程数据库设计部署方案扩展功能建议项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作以下是关于使用Python Flask、Django、PyCharm和Vue.js实现新能源汽车租赁管理系统…...

智慧农业农业四情监测系统 农情定点监测系统

AI害虫自动识别,精准辨虫、智能预警系统搭载行业先进的AI智能图像识别算法,搭配高清户外摄像头,24小时不间断自动捕捉田间害虫动态,告别传统人工下田查虫、肉眼辨认、耗时费力的弊端。AI模型经过海量农业害虫样本训练,…...

同花顺公式语法实战笔记

文章目录2026-03-17报错代码修正后代码报错报错 行3: 语法错误, 变量<开始测试>未定义报错 行5: 语法错误, 错误的输出线型错误代码正确代码-DOTLINE版本正确代码-LINETHICK1版本其他调试技巧2026-03-17 报错代码 MA5 : MA(CLOSE, 5); MA10 : MA(CLOSE, 10); { 新增&am…...

SQL-忘记sa密码,如何安全的尝试旧密码,如何修改新密码

Q: 现是记住密码的状态&#xff0c;所以可以直接登录。但是操作员忘了sa的密码&#xff0c;想尝试一下sa密码&#xff0c;如果不正确仍可保证能登录进去&#xff0c;那么当前的密码状态是否要勾选记住密码。 当前是勾选了记住密码&#xff0c;但想验证 sa 密码&#xff0c;且要…...

猫头虎AI分享:什么是QClaw?QClaw 是基于 OpenClaw 的极简封装,QClaw的下载、安装、配置指南

猫头虎AI分享&#xff1a;什么是QClaw&#xff1f;QClaw 是基于 OpenClaw 的极简封装&#xff0c;QClaw的下载、安装、配置指南 &#x1f42f; 猫头虎博主按&#xff1a;腾讯终于出手了&#xff01;这款"龙虾"Agent让我看到了国产AI工具的新可能——不用配环境、不用…...

python-flask的美食分享交流平台_django pycharm vue

目录技术选型与框架说明后端实现&#xff08;Flask&#xff09;数据库模型设计前端实现&#xff08;Vue&#xff09;功能模块划分开发环境配置部署方案测试策略项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行…...

肽质量指纹图谱提取区域检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]【完整源码+数据集+部署教程】

一、背景意义 在生物医学研究和药物开发领域&#xff0c;肽作为生物活性分子的关键组成部分&#xff0c;受到越来越多的关注。肽质量指纹图谱的提取与分析&#xff0c;能够为新药的发现、疾病的诊断及生物标志物的筛选提供重要的信息。然而&#xff0c;传统的肽质量指纹图谱分析…...

Windows 本地部署 OpenClaw 超详细图文教程(保姆级)

本文以 PowerShell 一键部署 为核心方案&#xff0c;兼顾新手友好与稳定性&#xff0c;全程附操作说明与避坑要点&#xff0c;30 分钟内可完成部署。&#x1f4cb; 一、部署前准备&#xff08;必看&#xff09;1. 硬件与系统要求项目最低配置推荐配置说明系统Windows 10 64位&a…...

【C++算法入门】贪心算法-分糖果问题

本题取自LeetCode 135题 分糖果问题一 原题复现有n个小孩&#xff0c;每个小孩对应一个rating条件&#xff1a;每个小孩至少得到一颗糖&#xff0c;评分高的小孩要比相邻小孩多一颗糖求&#xff1a;最少需要多少糖二 思路分析本题利用贪心算法&#xff0c;需要两次遍历贪心。…...

OpenClaw 在 Ubuntu 22.04.5 LTS 上的安装与问题处理记录

整理说明&#xff1a;本记录通过小龙虾OpenClaw依据本地记忆文件、历史会话记录和当前运行配置整理&#xff0c;重点保留可复用的安装步骤、故障现象、根因判断和解决办法。一、环境概况操作系统&#xff1a;Ubuntu 22.04.5 LTSOpenClaw 状态目录&#xff1a;/home/node/.openc…...

解锁细胞奥秘:BMKMANU Cell Marker

在单细胞测序和空间转录组学日益成为生命科学研究基石的今天&#xff0c;研究人员常常面临一个核心难题&#xff1a;我检测到的这群细胞究竟是什么类型&#xff1f; 面对海量的基因表达数据&#xff0c;如何准确、快速地为细胞"贴上"正确的身份标签&#xff0c;成为制…...

基于深度强化学习的虚拟重联列车LQR自适应控制:理论、实现与代码详解

基于深度强化学习的虚拟重联列车LQR自适应控制:理论、实现与代码详解 摘要 虚拟重联(Virtual Coupling)作为下一代轨道交通的关键技术,通过无线通信实现列车之间的协同运行,大幅提升线路容量和运行效率。然而,虚拟重联列车组在运行过程中面临复杂的非线性动力学特性、时…...

RK3588 Linux系统GPIO口测试方法及自动化测试脚本

1、GPIO编号计算... 2 2、测试举例... 2 2.1 gpio_request申请导出相应的gpio. 2 2.2 gpio_direction_output 设置相应gpio为输出方向... 3 2.3 gpio_set_value 设置输出电平... 3 设置输出为高电平... 3 设置输出为低电平... 3 2.4 gpio_get_value 获取gpio当前状态值…...

KA品牌进化论

凌克客服如何以八大核心能力&#xff0c;重构全域增长新范式2026年&#xff0c;中国电商行业进入存量博弈的深水区。流量成本持续攀升&#xff0c;平台规则日新月异&#xff0c;消费者对服务体验的要求水涨船高。对于年销售额千万级乃至亿级的KA品牌而言&#xff0c;单一维度的…...

中小企业为什么要重视业财一体化

一、业财一体化的核心定义与背景1. 什么是业财一体化业财一体化是指将企业的业务流程与财务管理深度融合&#xff0c;形成数据闭环管理的一种管理模式。 它通过打通业务系统与财务系统的数据孤岛&#xff0c;实现信息实时共享和协同运作。这种模式不仅提升了企业运营效率&#…...

吃透HTTP及相关协议核心区别,从基础到进阶全覆盖

在后端开发、网络通信领域&#xff0c;HTTP协议及相关的传输层协议、加密方式、会话机制等&#xff0c;是面试高频考点&#xff0c;也是日常开发中避不开的基础知识点。很多开发者在实际工作中能熟练使用&#xff0c;但对其底层原理和核心区别一知半解&#xff0c;导致遇到问题…...

【C语言学习笔记】(1)

一&#xff0c;c语言总览。 1&#xff0c;c语言被选择的原因 c语言在嵌入式中为主要的高级汇编语言&#xff0c;可直接驱动大多数的多核心开发板。 嵌入式可以嵌入多种电子设备&#xff0c;帮助设备进行多种策略与行为。 由于嵌入式设备可能没有系统环境只能运行二进制机器…...

二十、Kubernetes基础-13-kubeadm-ha-kubernetes-deployment-guide-03-haproxy-keepalived

kubeadm 部署高可用 Kubernetes 集群完全指南&#xff08;三&#xff09;&#xff1a;HAProxyKeepalived 高可用负载均衡部署 作者&#xff1a;云原生架构专家 技术栈&#xff1a;Kubernetes 1.21, HAProxy, Keepalived, VRRP, 负载均衡 难度等级&#xff1a;★★★★★&#x…...

TCP vs UDP 怎么选(偏实战:别背概念,用场景做决策)

项目里真正让人纠结的不是“TCP 可靠/UDP 不可靠”这种结论&#xff0c;而是这些更具体的问题&#xff1a; 这个接口/链路到底能不能丢&#xff1f;丢了能不能重试补救&#xff1f;延迟更重要还是正确更重要&#xff1f;连接数很多、短连接很多时&#xff0c;系统扛不扛得住&am…...