长列表优化
当我们需要一次性创建一个1万个li的时候,这个时候如果每创建一次就给ul append一次那么浏览器会非常的卡顿 造成打开页面以后很长一段时间处于空白的页面,这对于用户来说是非常不好的体验 ,所以我们引入虚拟dom 按需加在,边加载边渲染
<script>
const total = 100000;
let ul = document.querySelector('ul');
const once = 20;
const loopCount = total/once;
let countHasRender = 0;
function add() {
const fragment = document.createDocumentFragment();
for (let i = 0; i < once; i++) {
const li = document.createElement('li');
li.innerHTML = Math.floor(Math.random()*total);
fragment.appendChild(li)
}
ul.appendChild(fragment)
countHasRender += 1;
loop();
}
function loop(){
if(countHasRender < loopCount){
window.requestAnimationFrame(add);
}
}
loop();
</script>