国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue大數據表格卡頓問題的完美解決方案

2024-05-06 15:41:30
字體:
來源:轉載
供稿:網友

前言

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

代碼分解

固定頭

<div class="table-head">  <div class="module"  v-bind:style="{ transform: 'translateX(' + scrollLeft + 'px)' }"   v-for="(item, index) in monthData" v-bind:key="index">  <table cellspacing="0" cellpadding="0">  <thead>  <tr>   <td colspan="30">{{item.month}}</td>  </tr>  <tr>   <td width="100"    v-for="(d_item, d_index) in item.days" v-bind:key="d_index"   style="min-width:100px">{{d_item}}</td>  </tr>  </thead>  </table>  </div> </div>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 金昌市| 涟水县| 北京市| 资阳市| 廊坊市| 册亨县| 邻水| 寿光市| 班玛县| 临澧县| 荃湾区| 察隅县| 丹阳市| 潮州市| 荣昌县| 封开县| 惠东县| 临沂市| 原平市| 永昌县| 响水县| 宾阳县| 江油市| 岑巩县| 山西省| 资阳市| 陕西省| 乃东县| 临猗县| 紫阳县| 乳源| 洪洞县| 土默特右旗| 长治市| 游戏| 雷波县| 全椒县| 肥城市| 衡阳市| 北辰区| 武平县|