Layui如何解决表格在大数据量(万级以上)下的渲染闪烁

大雪君_4844

大雪君_4844

2026-04-15

787人浏览

原创

layui.table渲染万级数据闪烁的本质是DOM批量重绘与响应式劫持叠加所致;必须关闭height未设值、page为false、loading:true三项默认行为,并在done回调中用DocumentFragment批量插入tbody,后端必须分页返回数据。

为什么 layui.table 渲染万级数据会闪烁

本质是 dom 批量重绘 + vue 式响应式劫持的叠加效应。layui 2.8+ 虽改用原生 js,但 table.render() 默认仍把全部数据塞进 tbody,浏览器要一次性生成上万个 tr 节点,触发强制同步布局(layout)和重绘(paint),肉眼就看到“白屏→闪一下→出来”。更麻烦的是,如果启用了 even、skin 或自定义 templet,每个单元格还要走一遍字符串拼接或函数调用,cpu 时间直接拉满。

必须关掉的三个默认行为

不关它们,加再多优化都是白搭:

  • height 设为具体数值(如 height: 500),否则表格无法启用虚拟滚动,scrollY 机制压根不生效
  • page 必须设为 true,且 limit 控制在 50–100;万级数据不分页,table.reload() 时仍会全量重绘
  • 禁用 loading: true 的默认动画——它底层用 setTimeout 插入 loading dom,和真实渲染竞争 DOM 树,反而加剧抖动

用 done 回调接管渲染时机

别依赖 table.render() 自动完成,万级数据下它的内部 render 流程不可控。把实际插入逻辑挪到 done 里,等 layui 完成表头、分页器等轻量结构后再动手:

人工智能数字技术机器人全息大脑大数据分析矢量素材(EPS)
人工智能数字技术机器人全息大脑大数据分析矢量素材(EPS)

这是一款人工智能数字技术机器人全息大脑大数据分析矢量素材,格式为 EPS,含 JPG 预览图。

下载
table.render({
  elem: '#demo',
  height: 500,
  url: '/api/list',
  page: true,
  limit: 80,
  done: function(res, curr, count) {
    // 此时表头、分页已就位,只操作 tbody
    const tbody = this.elem.next('.layui-table-box').find('tbody');
    tbody.empty(); // 清空可能残留的 loading 占位
    // 这里可手写字符串拼接,或用 DocumentFragment 批量 append
    const frag = document.createDocumentFragment();
    res.data.forEach(row => {
      const tr = document.createElement('tr');
      tr.innerHTML = `<td>${row.id}</td><td>${row.name}</td>`;
      frag.appendChild(tr);
    });
    tbody[0].appendChild(frag);
  }
});

后端必须配合做分页,前端别硬扛

这是最容易被忽略的「假优化」:有人试图用 data 传入全部万条数据,再靠 page: true 前端切片——layui 内部仍会遍历整个数组做字段映射、格式化、筛选,内存占用翻倍,GC 频繁导致卡顿更明显。

  • 后端接口必须支持 page 和 limit 参数,只返回当前页数据
  • 避免在 templet 里调用异步函数(比如查用户头像),这会让每一行都触发微任务,渲染队列崩坏
  • 如果真需要全局搜索,用服务端模糊查询,别把全量数据 load 到前端再 filter

真正卡住的从来不是 layui,是没切断数据流的源头。后端少吐一条无效字段,比前端加十个 debounce 都管用。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

大数据 layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2323

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5023

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6110

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5638

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

803

5

大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

4716

5

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

2025.12.08

1229

12

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

223

5

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

466

22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 181人学习

大数据(MySQL)视频教程完整版
大数据(MySQL)视频教程完整版

共200课时 | 27.7万人学习

PHP会话控制/文件上传/分页技术
PHP会话控制/文件上传/分页技术

共22课时 | 2.9万人学习