时间:2021-05-26
前言
vue渲染小数据挺快,大数据vue开始出现卡顿现象,本文讲给大家详细介绍关于vue大数据表格卡顿问题的解决方法
点我在线体验Demo(请用电脑查看)
亲测苹果电脑,chrome浏览器无卡顿现象,其它浏览器并未测试,如遇到卡顿请备注系统和浏览器,方便我后续优化,谢谢
先看一下效果,一共1000 X 100 = 10W个单元格基本感受不到卡顿,而且每个单元格点击可以编辑,支持固定头和固定列
项目源代码地址 Github(本地下载)
解决问题核心点:横向滚动加载,竖向滚动加载
项目背景
笔者最近在做广告排期功能,需要进行点位预占,大的合同可能需要对多个资源排期,周期可能到几年这样,然后我们的页面交互是这样
横向每个月30个单元格,最多的3年,36个月,每行36*30=1080个单元格
竖向100个资源,总共约️10W个单元格,然后每个单元格里面会有一个输入框,一个库存总数,所以总数是20W个,内网使用,接口请求根本不是问题,可以浏览器渲染就扛不住了接口回来之后会出现几十秒的白屏,整个页面处于卡死状态
这还不算,加载出之后页面操作也是非常卡,滑动延迟严重,页面基本处于瘫痪状态
之前的功能是基于jquery开发的,项目重构用的vue,UI采用了ElementUI,ElmentUI中的表格在数据量较大是有严重的性能问题,最直接的表现就是白屏时间较长,而且会出现渲染错乱
所以就想着自己实现一个表格,解决卡顿问题
实现思路
表格拆分,动态加载
表格横向按月拆分,每个月份单独一个table,月份table外层放一个占位div,根据横向滚动位置控制展示
竖向按资源拆分,同样包裹一个占位div,按照滚动位置动态加载,始终保持dom数量上线
动态编辑,按需生成编辑输入框
不同的标签在浏览器渲染时性能是不一样的,比如input这种标签就比span等标签重许多,所以不能满屏input
方案就是点击单元格展示输入框,焦点丢失移除,此处的展示非display控制显示隐藏,而是v-if控制dom是否加载
代码分解
固定头
固定列
表体
经过如上优化,完美解决表格卡顿问题,但是我并没有封装组件,原因如下
·插件封装后会有很多限制,不能再用vue那种模板写法,用json传入数据,自定义内容不是很灵活
·可以根据自己的应用场景自行修改拓展,代码已经很简洁
·比较懒
如果你有类似需求可以试一下我这个,也欢迎Star
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
无论Windows10打过多少补丁,官方说的有多么完美,运行卡顿和程序假死还是常有的事儿。这个时候常规的解决方案就是用任务管理器(Ctrl+Alt+Del)去解
无论Windows10打过多少补丁,官方说的有多么完美,运行卡顿和程序假死还是常有的事儿。这个时候常规的解决方案就是用任务管理器(Ctrl+Alt+Del)去解
无论Windows10打过多少补丁,官方说的有多么完美,运行卡顿和程序假死还是常有的事儿。这个时候常规的解决方案就是用任务管理器(Ctrl+Alt+Del)去解
avuecomponent,基于vue的表格组件,主要解决大数据量的表格渲染性能问题,使用canvas绘制表格,同时支持类似excel的批量选中,复制黏贴删除,
12月7日消息,在京东首届大数据峰会上,京东公布了针对与线下零售的全新智能零售解决方案――数链+。据介绍,数链+大数据智能零售服务解决方案整合了此前京东在门店科