自定义元素需显式控制定义与实例化时机;应推迟非首屏组件的define()至交互前,首屏组件在defer脚本中同步定义;动态import结合条件注册实现真正按需加载。

自定义元素(Custom Elements)本身不自动延迟加载,必须显式控制其定义时机和实例化时机;盲目提前 customElements.define() 或在首屏渲染前批量注册,反而会拖慢关键渲染路径。
什么时候该调用 customElements.define()
浏览器解析到自定义标签(如 <my-card></my-card>)时,若尚未定义,会先以“unknown”元素挂载 DOM,等定义后才升级。这意味着:定义可以晚于 HTML 解析,但必须早于首次升级触发点(通常是 DOMContentLoaded 后的首个 microtask 或首次访问 document.querySelector('my-card'))。
实操建议:
- 对非首屏组件(如弹窗、设置页模块),推迟到用户交互前再定义:
button.addEventListener('click', () => { customElements.define('my-dialog', MyDialog); }); - 对首屏可能用到的组件,可在
<script type="module"></script>中同步定义,但确保该模块本身被defer或放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











