首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >渲染多个(数百甚至数千)web组件

渲染多个(数百甚至数千)web组件
EN

Stack Overflow用户
提问于 2021-03-31 07:40:16
回答 1查看 185关注 0票数 0

我面临的问题是渲染很多web组件的速度很慢。编写脚本大约需要1,5秒,然后再花3秒来渲染大约5k个元素(主要是布局+重新计算样式),我计划在DOM中投入更多。我准备这些元素的脚本大约需要100-200ms,其余的来自constructor和其他回调函数。

对于普通的超文本标记语言元素,可以使用documentFragment获得性能提升,在这种情况下,您基本上准备了一批元素,并且只有在准备完成后才将它们附加到DOM。

不幸的是,每个web组件都会调用它的constructor和其他回调函数,比如connectedCallbackattributeChangedCallback等。当有很多这样的组件时,这并不是最优的。

在将web组件插入到DOM之前,有没有办法让它们“预渲染”?

我尝试将它们放在template元素中并克隆内容,但是仍然为my-component的每个实例调用构造函数。有一件事确实提高了性能,那就是将附加到影子DOM的内容放在组件外部的模板中,并克隆它,而不是使用this.attachShadow({ mode: 'open' }).innerHTML=...,但这还不够。

EN

回答 1

Stack Overflow用户

发布于 2021-03-31 07:51:58

你真的需要一次渲染所有~5k个元素吗?如果您设法预初始化内存中的组件,那么您将面临在DOM中呈现那么多元素的性能问题。

此场景的一种常见技术是使用一种称为“窗口”或“延迟呈现”的技术:其思想是在任何给定时间仅呈现组件的一小部分,这取决于用户视口上的内容。

经过一个非常快速的搜索,我没有找到实现这一点的web组件库,但是在React中有react-window和Vue vue-windowing作为参考

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66879797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档