vue虚拟滚动性能优化的方法


本文小编为大家详细介绍“vue虚拟滚动性能优化的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue虚拟滚动性能优化的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一个简单的情景模拟(千万别被带入):A: 假设现在有 10 万条数据,你作为前端该怎么优化这种大数据的列表?B: 针对大数据列表一般不会依次性加载,会采用上拉加载、分页加载等方式实现优化.A: 那假如加载到最后一条数据的时候,页面上只是列表部分的数据就至少对应 10 万个 dom 节点,你觉得一个页面渲染至少 10 万个 dom 节点的性能如何?A: 如果这样的列表有 n 个呢?还有没有别的优化方式?B: 要不我把自己优化一下 ……其实解决上述问题就可以使用 虚拟滚动 来实现优化,相信大家对这个词都不陌生,但由于这个名词比较短(又是虚拟,又是滚动)导致很多人觉得这是非常高大上、难以理解的内容,但其实恰恰相反。本文的目的就是帮助你以 最简单 的方式 理解虚拟滚动,甚至实现 虚拟滚动.其实要理解 虚拟滚动 这个词很简单,按照 虚拟 和 滚动 两部分来理解就很简单了,下面就一一拆解。通常在页面列表中,要渲染的 列表数量 和真实在文档中存在的 DOM 节点数 是 1 : 1 的。每个列表项都拥有相同的高度(假设是 30px),这个列表容器中需要完全渲染的列表数(假设是 100 条)和在页面中的高度是一致的,即此时的高度就为 100 * 30 = 300 px,对应列表的 DOM 数量为 100,如:对于 虚拟滚动 来讲,虚拟 的意思是指实际要渲染完整列表对应的高度是通过 虚拟计算 的,并不是指文档中存在对应的 DOM 节点数。上面的栗子对应到虚拟滚动来讲,就意味着实际渲染完整列表对应的高度就仍为 100 * 30 = 300px,但实际渲染数就变为 10 条,关系图大致如下:所谓 滚动 就很好理解了,因为列表可视区通常会限制一定的高度,即 列表可视区高度,那么此时只要 虚拟列表高度 值大于 列表可视区高度 时,就会产生滚动条即可发生滚动操作。值得注意的是,在发生滚动时需要对 实际渲染的列表 进行一些处理,否则会出现 实际渲染的列表 和 虚拟列表区 脱离的情况,比如:关键点就是实现在发生 滚动 操作时,保证 实际渲染的列表 一直存在 列表可视区 中,并且动态切换需要渲染的列表数据。设置列表可视区的高度 containerHeight设置单个列表项的高度 listItemHeight计算渲染完整列表需要的高度 virtualHeight,即 virtualHeight = listItemHeight * data.length设置真实渲染数据的起始索引 startIndex、endIndex,用于从列表数据 data 中获取对应的数据内容注册/监听滚动事件 on免费云主机域名Scroll获取当前实际滚动距离 eleScrollTop将 eleScrollTop 作为 translateY 的值,即 实际渲染列表元素 平移的数值,保证 实际渲染列表元素 一直存在可视区中根据实际的滚动距离 eleScrollTop,动态计算列表新的起始索引 startIndex、endIndex具体实现细节都在如下的代码中,可结合其中的注释阅读:读到这里,这篇“vue虚拟滚动性能优化的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: php数组指针如何使用

本篇内容主要讲解“php数组指针如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数组指针如何使用”吧! php数组指针用于操作数组。数组指针是数组内部的组织机制,每个数组都有一个内部的指针指向它“当前的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/27 21:59
下一篇 03/27 22:00

相关推荐