当前位置: 首页 > news >正文

【前端】动态插入并渲染大量数据的方法-时间分片:使用requestAnimationFrame+DocumentFragment

文章目录

    • 前言
    • requestAnimationFrame
    • DocumentFragment
    • 代码

前言

动态插入并渲染大量数据的方法,一般有两种:

  • 时间分片
  • 虚拟列表

这里记录时间分片的方法。

「前端进阶」高性能渲染十万条数据(时间分片)在实际工作中,我们很少会遇到一次性需要向页面中插入大量数据的情况,但是为了丰 - 掘金

只适用于列表项的DOM结构十分简单的情况。

requestAnimationFrame

Window:requestAnimationFrame() 方法 - Web API | MDN

window.requestAnimationFrame()方法会告诉浏览器你希望执行一个动画。它要求浏览器在下一次重绘之前,调用用户提供的回调函数。 对回调函数的调用频率通常与显示器的刷新率相匹配。

也就是说,这是由浏览器来决定下次调用回调函数的时机。在这里的代码里,就是下一页数据的渲染时机由浏览器决定。

DocumentFragment

DocumentFragment - Web API | MDN

使用虚拟节点。存在虚拟节点DocumentFragment中的内容是存在内存中的。
防止频繁操作DOM,影响性能。

代码

import { ref, onMounted } from 'vue'const containerRef = ref()
const total = 10000
const once = 20onMounted(() => {if (containerRef.value) {loopRender(total)}
})const loopRender = (curTotal) => {if (curTotal <= 0) {return}//   当前页数条数const pageCount = Math.min(once, curTotal)window.requestAnimationFrame(() => {const fragment = document.createDocumentFragment()for (let i = 0; i < pageCount; i++) {const li = document.createElement('li')li.innerText = Math.random() * totalfragment.appendChild(li)}containerRef.value.appendChild(fragment)loopRender(curTotal - pageCount)})
}
http://www.dtcms.com/a/572597.html

相关文章:

  • 耶鲁大学Hello Robot研究解读:人类反馈策略的多样性与有效性
  • Unity摄像机鼠标右键旋转功能
  • Spring AI Alibaba文生图实战:从零开始编写AI图片生成Demo
  • 文本编辑器做网站国外设计师
  • 网站多久电子信息工程就业方向
  • 大连网站seo顾问企业开发网站公司
  • 南京网站设计搭建公司网站怎么做rss
  • 外包做网站谷歌seo优化
  • 博物馆网站 建设方案外贸短视频营销
  • 网站如何在360做提交微信开发公司怎么样
  • 广州微网站建设信息设计图案大全
  • 苏州吴中区专业做网站郑州哪里可以做网站
  • cms网站开发毕设简述网站建设的方法
  • 怎样建立网站挣钱网站建设功能选择表
  • 郑州加盟做网站开源程序网站
  • 万维网网站注册网站线下推广怎么做
  • 郑州 网站建设:网站开发页面大小适应屏幕
  • 网络营销网站建设知识南通关键词优化软件
  • 公司网站页脚dedecms手机网站模板
  • 团购网站建设公司深圳营销型网页设计公司
  • 东莞网站建设在哪里wordpress 加载中动画
  • 慈溪市建设局网站h5免费制作平台火蚁
  • 平凉北京网站建设百度店铺免费入驻
  • wordpress termmeta怎么把网站排名优化
  • 服装企业网站内容规划企业网站建设方案教程
  • 网站建设步骤和流程ico wordpress
  • 现在有什么网站可以做兼职的微信小程序开发大赛
  • 化妆品网站建设描述wordpress 导航不可点击
  • 友汇网站建设一般多少钱wordpress百度主动插件
  • 济南公司网站建设公司哪家好网站建设 中软