前端如何处理大量数据。

2024-01-09

(理论就是分割后台数据 然后通过定时器将数据加载到虚拟dom上  加载完成后渲染一部分)

在项目中经常会碰到大量数据需要在前端页面渲染,很多时候会使用分页的功能,但是数据量过大的时候比如10万条这种的,一直滑动列表后面会出现卡顿,滑不动的现象,这时候就需要前端来做些优化

1.createDocumentFragment()碎片节点

渲染 大数据 时,将数据分成一段一段执行,createDocumentFragment()创建一个虚拟节点对象,将一部分数据先添加到DocumentFragment中,再统一将DocumentFragment添加到页面,会减少页面渲染DOM的次数,效率会明显提升

<body>
   <ul></ul>
   <script>
      const total = 100000; // 插入十万条数据
      const onceCount = 50; // 每次插入50条数据
      const sumCount = Math.ceil(total/onceCount); // 插入数据需要的次数
      var renderCount = 0; // 渲染次数
      var ul = document.querySelector("ul"); // 获取要插入数据的父节点
      function add(){ // 添加数据方法
         var fragment = document.createDocumentFragment(); // 创建虚拟节点
         for( let i=0; i<onceCount; i++){
            var li = document.createElement("li");
            li.innerHTML = Math.floor(Math.random()*100000);
            fragment.appendChild(li); // 插入虚拟节点不消耗性能
         }
         ul.appendChild(fragment);
         renderCount++;
         loop();
      }

      function loop(){
         if(renderCount<sumCount){
            window.requestAnimationFrame(add)
         }
      }
      loop();

   </script>
</body>

2.requestAnimationFrame()
上面的代码中使用到了requestAnimationFrame(), 实现动画效果的方法比较多,javascript中可以通过定时器setTimeout来实现,css3可以使用transition和animation来实现,html5中的canvas也可以实现。除此之外html5还提供一个专门用于请求动画的API, 即requestAnimationFrame(rAF), 直译就是 “请求动画帧”

requestAnimationFrame比起setTimeout,setInterval的优势主要是两点:
requestAnimationFrame会把每一帧中的所有dom操作集中起来,在一次重绘和回流中完成,并且重绘或回流的时间间隔紧紧会随浏览器的刷新频率,一般来说频率为每帧60秒 在隐藏不可见元素中,requestAnimationFrame将不会进行重绘或回流.有更少的cpu,gpu和内存使用量.
那就是说,rAF的执行步伐跟着系统的绘制频率走, 它能保证回调函数在屏幕每一次的绘制间隔中只被执行一次, 这样就不会引起丢帧现象,也不会导致动画出现卡顿的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端如何处理大量数据。 的相关文章

随机推荐

  • uni.ownloadFile下载下来的文件没有后缀名

    let filepathss plus io convertLocalFileSystemURL data tempFilePath plus io resolveLocalFileSystemURL filepathss function
  • python ConfigParser:Python 标准库,ini 文件解析器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 大家好 在进行接口自动化工作时 配置文件是非常常见和重要的一部分 Python 提供了一个强大的标准库 ConfigParser 用于解析和处理 INI
  • Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

    随着互联网的快速发展 越来越多的企业开始注重数字化转型 以提升自身的竞争力和运营效率 在这个背景下 鸿鹄云商SAAS云产品应运而生 为企业提供了一种简单 高效 安全的数字化解决方案 鸿鹄云商SAAS云产品是一种基于云计算的软件服务 旨在帮助
  • java版商城之一件代发设置 Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城免 费 搭 建 直播带货商城

    在数字化时代 电商行业正经历着前所未有的变革 鸿鹄云商的saas云平台以其独特的架构和先进的理念 为电商行业带来了全新的商业模式和营销策略 该平台涉及多个平台端 包括平台管理 商家端 买家平台 微服务平台等 涵盖了pc端 手机端 h5 公众
  • 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

    前言 先来自我介绍 老家农村 家里好不容易把我送到大城市读书 大学非985 211 但在我们老家 能出一个本科大学生也是非常不容易的 因为农村信息的相对闭塞 我对大学专业一无所知 加上分数并非前茅 最后被调剂一个我并不喜欢的专业 这里就不透
  • 所有行业的最终归宿-知识付费saas租户平台 打造知识付费平台

    随着科技的不断进步和全球化的加速发展 我们生活在一个信息爆炸的时代 各行各业都在努力适应这一变化 寻找新的商业模式和增长机会 在这个过程中 一个趋势逐渐凸显出来 那就是知识付费 可以说 知识付费正在成为所有行业的最终归宿 明理信息科技知识服
  • HarmonyOS鸿蒙开发指南:容器组建 form开发指导

    目录 创建Form组件 实现表单缩放 设置Form样式 添加响应事件 场景示例 创建Form组件 在pages index目录下的hml文件中创建一个Form组件 div class container div
  • HarmonyOS鸿蒙开发指南:容器组建 stepper开发指导

    目录 创建Stepper组件 设置index属性 设置样式 添加事件 场景示例 创建Stepper组件 在pages index目录下的hml文件中创建一个Stepper组件 div class container div
  • Java 学习路线 2024 最新版!

    又对上次分享的 Java 学习路线进行了简单修改完善 并增加了免登录下载和黑夜模式 这里重发一下 花了一个月零碎的时间 我根据当下 Java 后端求职和招聘的最新要求 对之前写的 Java 后端学习路线进行了全面的优化和改进 添加图片注释
  • 【银行测试】金融项目-APP测试要点详细汇总(详全)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系
  • python画彩虹和小熊

    前言 今天 我们来画两个简单的图形 一 彩虹 彩虹 又称天弓 客家话 天虹 绛等 简称为 虹 是气象中的一种光学现象 当太阳光照射到半空中的水滴时 光线被折射及反射 在天空上形成拱形的七彩光谱 雨后常见 形状弯曲 通常为半圆状 色彩艳丽 东
  • react-native打包发布

    1 在命令行中使用以下命令生成签名密钥 keytool genkeypair v keystore my release key keystore alias my key alias keyalg RSA keysize 2048 val
  • HarmonyOS鸿蒙开发指南:容器组建 list开发指导

    创建List组件 在pages index目录下的hml文件中创建一个List组件 div class container div
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 搜索二叉树(BSTree)

    一 搜索二叉树的概念 二叉搜索树又称为做二叉排序树 二叉查找树 其要么是一棵空树 要么是一个满足以下性质的二叉树 若它的左子树不空 则左子树上所有结点的关键字均小于根结点关键字 若它的右子树不空 则右子树上所有结点的关键字均大于根结点关键字
  • 9个最受欢迎的开源自动化测试框架盘点

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 自动化测试框架可以帮助测试人员评估多个Web和移动应用程序的功能 安全性 可用性和可访问性 尽管团队可以自己构建复杂的自动化测试框架 但是当他们可以使用
  • 深入了解鸿鹄电子招投标系统:Java版企业电子招标采购系统的核心功能

    随着市场竞争的加剧和企业规模的扩大 招采管理逐渐成为企业核心竞争力的重要组成部分 为了提高招采工作的效率和质量 我们提出了一种基于电子化平台的解决方案 该方案旨在通过电子化招投标 使得招标采购的质量更高 速度更快 同时节约招标成本 提升企业
  • 游戏被攻击了要怎么办

    有客户反馈刚上线新款游戏 没两天就被攻击了 导致用户无法登录 来咨询到我们这边能不能帮他解决 今天就来分享下 怎么预防游戏攻击和已经被攻击的游戏服务器该怎么处理 服务器不管是个人还是企业 被攻击的都有 在所难免 特别是新上线时候要承受住外来
  • 985毕业,我依然过不好这一生?(大厂java开发2年被裁)

    前言 看到标题 可能很多读者朋友恐怕又要骂我了 985这个特殊的字眼也确实异常晃眼 实际上现在985 211也越来越多 它能代表你能够进入到更高的平台 拿到 高级工厂 的入场券 但并不意味着你会成为赢家 或者说也不代表着你会站在金字塔的顶端
  • 前端如何处理大量数据。

    理论就是分割后台数据 然后通过定时器将数据加载到虚拟dom上 加载完成后渲染一部分 在项目中经常会碰到大量数据需要在前端页面渲染 很多时候会使用分页的功能 但是数据量过大的时候比如10万条这种的 一直滑动列表后面会出现卡顿 滑不动的现象 这