vue大数据表格卡顿问题的完美解决方案-创新互联

前言

创新互联建站服务紧随时代发展步伐,进行技术革新和技术进步,经过十余年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站建设、网站制作、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

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是否加载


代码分解


固定头


{{item.month}}
{{d_item}}

标题名称:vue大数据表格卡顿问题的完美解决方案-创新互联
当前链接:http://myzitong.com/article/iphoj.html