项目需要,一个HTML页面上需要生成出来将近1000个input输入框。直接输出,每次都会等待3秒上下的时间,请问有没有什么办法能提高下输出效率?
项目需要,一个HTML页面上需要生成出来将近1000个input输入框。直接输出,每次都会等待3秒上下的时间,请问有没有什么办法能提高下输出效率?
我觉得首先要排查一下是代码执行效率的问题还是一次性渲染DOM过多导致的问题。
1.如果这1000个input是你for循环写出来的,有可能是你这个for循环里面做的事影响了效率。
2.如果不是代码执行效率问题,而是一次性渲染的DOM太多太重了,导致的线程阻塞,可以考虑优化渲染方式。具体可以参考:
<div id="container"></div>
<script>
const inputsStr = '<div><input /></div>'.repeat(1000);
document.querySelector('#container').innerHTML = inputsStr;
</script>
几百毫秒的事啊 你的3s应该是其他地方导致的吧
13 回答13.1k 阅读
7 回答2.3k 阅读
5 回答1.6k 阅读
5 回答1.9k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
虚拟化,原则上来讲你渲染了太多的内容导致速度变慢。所以只要渲染少部分数据就可以。那就只渲染视口内的数据即可。
如果你不考虑改这个,然后你又觉得一次3s太恐怖了,那么你可以分批渲染,一次只渲染一部分(50个100个),这样看到一开始的内容不会太慢。当然这个方案最后还是会出现瓶颈的。