Vue.js 学习笔记 - 虚拟列表(Virtual-Scroll-List)心得
2023-06-13 09:15:12 时间
虚拟列表
背景
手上有个字幕编辑器的项目,因为长视频也许会有几千条字幕,所以字幕编辑器的列表中就会有几千条列表项。 但是如果将这几千条列表项全部渲染在 DOM 中,就会造成浏览器轻则卡顿,重则卡死,根本无法正常使用。 针对这种情况,我通过 Google 了解到可以通过虚拟列表技术来解决。 虚拟列表做的事情,就是按需渲染。只需要渲染当前视图需要显示的几个条目和即将滚动到的几个条目。在开发者工具中可以发现,DOM 中只存在这么几条列表项,当滚动的时候会替换这几项。所以大大节省了系统资源,提升了用户体验。 我在 GitHub 上找了几个基于Vue.js 的虚拟列表实现,最终找到了一个最合适的 vue-virtual-scroll-list ,并在项目中进行了使用。 我在闲暇之余研读了一下此项目的代码,发现实现方式比想象中还要简单。
核心实现
this.$slots.default类型为数组,存储的是此组件两标签中的内容,在此特指大量的列表项。 通过 Vue 数组的 filter 方法,筛选出处于当前视图中的几个项,选择性的只渲染出这几个在 DOM 中。渲染是依据 Vue 的 render 函数来动态定义组件。
export default {
name: 'item',
props: [
'item',
'k'
],
render: function (createElement) {
return createElement(
'div',
this.$slots.default.filter(function (slot, index) {
return index > 5 && index < 10
})
)
}
}
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- 一篇文章,Vue快速入门!!!
- Vue之const的使用及注意点
- vue JS 对象转数组[通俗易懂]
- vue双向绑定失效_vue 跨域
- vue源码分析-事件机制
- 总结了Vue组件通信方式,别再说不会组件通信了
- Vue 状态过度
- Vue学习笔记之vue.js 两个等号 == 和三个等号===的区别 数字0和空字符串
- vue遍历数组中的数组_vue数组转json
- 在网页文档中引入Vue.js的方法有哪些?_vue直接引入js文件没有用
- Vue.js 学习笔记 - 组件(Components)
- Vue(renren-fast_vue_master)项目目录结构[通俗易懂]
- 美团前端常见vue面试题(必备)_2023-02-28
- 开心档之Vue教程2
- Vue学习笔记之opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]的问题
- 写过vue自定义指令吗,原理是什么
- 前端vue面试题集锦1
- 【JS 逆向百例】猿人学系列 web 比赛第五题:js 混淆 - 乱码增强,详细剖析
- vue.js客服系统实时聊天项目开发(一)路由与子路由-全局变量-elementui搭建基本框架
- 这3个Vue开源项目,YYDS !
- Vue状态管理——Vuex
- 自定义事件在 Vue.js 组件中的应用
- vue入门篇之Vue.js 组件
- 理解 Vue 生命周期钩子
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- Vue.js 与MySQL结合,打造高效Web应用程序(vue.js mysql)
- Vue如何连接Redis(vue怎么连接Redis)
- 优化网站性能,Vue搭配Redis缓存更加有效(vue使用redis缓存)
- 构建基于Vue与Redis的高性能缓存系统(VUE redis缓存)
- 研究Oracle VUE价格探究深入探究和分析(oracle vue价格)