【uni-app】vue长列表性能优化

本文探讨了一位业余开发者在Vue应用中遇到的长列表加载卡顿问题及其解决方案。优化措施包括图片懒加载(使用函数节流减少触发频率)、优先使用CSS背景图、理解Vue的数据绑定原理以减少不必要的视图计算、利用自定义组件隔离更新影响以及简化视图结构。此外,还强调了避免将非视图所需变量放在视图层中以减少内存消耗。尽管使用`:key`属性可以帮助优化,但作者指出其并不能解决所有问题,正确的使用方式取决于具体应用场景。

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

前言,本人业余开发者而已。对于vue懂得比较基础。

经历:我在加载一个长列表。每次加载50条数据。基本上无限次数加载。可以在移动端感觉出明显的卡顿
在这里插入图片描述
下面是我的优化

  1. 图片必须懒加载,是否懒加载蛮明显的。
    图片懒加载也要优化好。例如onPageScroll事件中就可以使用函数节流手段。【0.2秒只触发一次】

  2. 我尽量采用css的background-background-image: url(); 而不使用 vue的image标签。具体我个人认为。image标签会被编译为这样子的结构。理论上更复杂的结构,耗能更大在这里插入图片描述

  3. 从原理上剖析,每次data里面定义的变量【且在视图区被调用的变量】发生变动,整个视图区都会重新计算。如果你向v-for的数据尾部拼接了数据,那么原数据前面的数据也会循环计算【但是直接计算,不会覆盖到视图区】。

    把比方。原数据100条,你拼接了50条数据在数组尾部。整个视图区会重新计算。循环区域会计算150次。
    虽然说前0-100只是计算,并不会覆盖的视图区。但是计算它也吃内存是吧

    有的人可能会说,给v-for设置:key不就可以了吗。并不是的

    另外有的人认为key的值不能使用index,而是需要使用itme[‘id’]。其实并不是的,如果你的数组不会修改,或者索引不会修改,你大可以使用index就行了

  4. 每个v-for使用自定义组件。这样再更新100-150条数据的时候。第0-100条数据是不会更新的。具体原理我也不知道在这里插入图片描述

  5. 尽可能优化视图结构,别套来套去的

PS: 无论你写什么,尽可能把不需要出现的视图中的变量写在其他地方(指自定义组件)。以免视图区重新计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值