自定义元素不加速首屏,关键在定义时机与范围:首屏组件应在defer脚本中同步定义,非首屏组件须按需动态导入后注册,且构造函数和connectedcallback须轻量以避免阻塞渲染。

自定义元素本身不加速首屏,盲目提前 customElements.define() 反而拖慢渲染。关键不是“用不用”,而是“什么时候定义、定义哪些”。
customElements.define() 为什么不能在全局脚本开头调用
浏览器解析到未定义的自定义标签(如 <my-card></my-card>)时,会先挂载为 unknown 元素,等定义后才升级。这意味着定义可以晚于 HTML 解析,但必须早于首次访问该元素(比如 document.querySelector('my-card') 或 DOMContentLoaded 后第一个 microtask)。如果在 <script></script> 顶部就批量注册所有组件,尤其当它们依赖大量模板、样式或未就绪模块时,会立刻消耗 CPU、占用内存,并阻塞关键渲染路径。
常见错误现象:首屏 FCP 延迟、TTFB 正常但白屏时间长、DevTools Performance 面板中看到 Parse HTML 后紧跟着大量 JS 执行耗时。
- 首屏用到的组件(如
<app-header></app-header>、<hero-banner></hero-banner>)应在<script type="module" defer></script>中同步定义,且该脚本必须放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











