template标签适合预存纯净html骨架,内容以documentfragment形式惰性存储、不渲染不执行,须通过.content访问并克隆后插入dom,结构需与真实dom严格对齐以避免布局偏移。

必须用 .content 访问内部结构
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
结构要与真实 DOM 严格对齐
骨架不是装饰,而是渲染占位符。若真实页面中有一个带 flex 布局的卡片,骨架里也得保留相同层级、class 和 display 属性,否则 hydration 或 JS 替换时容易触发 layout shift。常见做法:
- 保留所有容器元素(、
、 ),仅替换文字为 .skeleton-text,图片为 .skeleton-image; - 不删减节点,避免后续 diff 成本升高;
- 宽高、aspect-ratio、padding/margin 均照搬真实样式,确保尺寸一致。
服务端输出时需注意“空壳”问题
SSR 或静态生成时,会被原样输出为 HTML 字符串,浏览器不会主动处理它。这意味着:- 客户端 JS 必须显式接管,比如在 DOMContentLoaded 后读取并挂载;
- 不要指望它“自动生效”,也不要在服务端尝试注入数据;
- 若用 Next.js、Nuxt 等框架,建议将 template 放在客户端专属组件中,避开 SSR 混淆;
- 避免把 直接写在
内部——浏览器会把它提升到 table 外,破坏语义和结构。
搭配骨架逻辑更高效
单纯存结构还不够,要让骨架真正“可用”,推荐组合使用:- 用 template 存纯 HTML 片段(无事件、无内联 script、无 src/href);
- 用 JS 控制何时克隆、填充、插入,例如 fetch 前显示,响应后 replaceWith;
- 批量插入多个骨架项时,先用 DocumentFragment 收集所有克隆节点,再一次性 append,减少回流;
- 需动态绑定数据时,只操作 textContent、dataset 或 classList,别依赖 innerHTML 重写。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










