同事:这个页面的逻辑没什么能复用的,不抽组件也没什么影响吧?

本文通过实例分析了Vue中单个文件过大、未进行组件抽离导致的性能问题。即使逻辑看似不可复用,也应考虑组件化以避免不必要的计算,提高应用性能。当组件混杂在一起时,页面数据更新会触发所有渲染,而独立组件则仅更新自身,减少性能开销。案例演示了倒计时和表单输入时的性能差异,并建议在不影响用户体验的范围内逐步优化项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近在维护同事的一个项目时,发现有不少单个vue文件一千余行,同一个文件上有倒计时、有输入信息的表单;
当时我就在想:是不是策划经常改需求或者排期紧急,所以没抽组件呢。

沟通过程

以下同事称为阿A
我:阿A,你的这个输入表单怎么不抽个组件,是不是时间当初太赶 ? //表情包。(因为关系比较好,就直接问了)
阿A:这个页面的逻辑没什么能复用的,不抽组件也没什么影响吧?
我:逻辑方面我看了,能读懂,没啥问题(先肯定一下);但是这样会影响性能。
阿A:不会吧,除非你证明给我看 //表情包。
我:晚点写个demo一起探讨一下

demo验证

1、倒计时组件没抽离有什么问题?偷下懒假设这个计数器就是倒计时组件
在这里插入图片描述
运行结果:当计数器time的值更新时,与计数器不相关的其他逻辑也在更新
在这里插入图片描述

2、再看下输入表单
在这里插入图片描述
运行结果:当表单输入信息时,可以看到不相关的逻辑也在更新
在这里插入图片描述
3、上边的 “不相关的逻辑”是很简单的计算,所以没啥感觉,我们加点复杂的逻辑
在这里插入图片描述
运行结果:可以看到,输入非常地卡顿,这时候用户估计默默关掉app/网页
在这里插入图片描述

结论

并不是不用复用的组件就不用抽,特别是一些计算量大的、需要频繁更新页面的组件,否则会影响性能。
原因是都写在一个文件的话,也就是属于同一个render方法,页面依赖的数据发生变更时会触发render,引发很多不必要的计算;抽离组件后,模板数据变化只会触发自身的render,不对其他逻辑造成影响。

其他结论: A同事项目线上之所以没用户反馈,主要是卡顿在用户能接受的范围(即计算复杂度没上边的第三个demo高),下次迭代偷偷优化吧,hhhh…

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值