当前端开发人员面对成千上万条记录要显示的时候,我们该怎么处理?

关键点:不卡顿,交互流畅

代码

  1. setTimeout(() => {
  2. // 插入十万条数据
  3. const total = 100000
  4. // 一次插入 * 条,如果觉得性能不好就减少
  5. const once = 200
  6. // 渲染数据总共需要几次
  7. const loopCount = total / once
  8. let countOfRender = 0
  9. let ul = document.querySelector("ul");
  10. function add() {
  11. // 优化性能,插入不会造成回流
  12. const fragment = document.createDocumentFragment();
  13. for (let i = 0; i < once; i++) {
  14. const li = document.createElement("li");
  15. // li.innerText = Math.floor(Math.random() * total);
  16. li.innerText = `这里是第 ${countOfRender} 次的 li ${i}`;
  17. fragment.appendChild(li);
  18. }
  19. ul.appendChild(fragment);
  20. countOfRender += 1;
  21. loop();
  22. }
  23. function loop() {
  24. if (countOfRender < loopCount) {
  25. window.requestAnimationFrame(add);
  26. }
  27. }
  28. loop();
  29. }, 0);