HTML5 中没有 <_template> 标签,它不是标准标签,浏览器将其视为未知自定义元素,不解析、无 content 属性;唯一合法原生模板标签是 。
HTML5 中没有
标签
直接说结论:
不是 HTML5 标准标签,
浏览器
会把它当作未知的自定义元素处理,不会触发任何模板解析逻辑。你看到的可能是拼写错误、框架私有语法(比如旧版 Angular 1.x 的
),或者误把
写成了下划线前缀。
是唯一合法的原生模板标签
HTML5 规范中只定义了
(无下划线),它的内容默认不渲染、不执行脚本、不加载资源,直到被 JavaScript 显式克隆并插入 DOM。
必须闭合:
,不能自闭合
支持所有 HTML 内容,包括
、
、
(但图片不会发起请求)
DOM 中可通过
获取,用
提取文档片段
为什么有人写成
?常见混淆点
这不是浏览器行为,而是开发者手动约定或框架遗留导致的误解:
某些构建工具(如早期 Webpack + HTML loader)允许用
作为占位符,由插件替换——它本身不参与 HTML 解析
AngularJS 1.x 曾用
或
存储模板,和
无关
手误:把
错打成
,又没报错(因为浏览器忽略未知标签),导致误以为“能用”
Shadow DOM 或自定义元素中,有人用
当作语义化注释,但它对浏览器毫无意义
如何判断一个模板是否真正生效?
别依赖标签名是否存在,看三件事:
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
立即学习
“
前端免费学习笔记(深入)
”;
是否在 DOM 中可见
:打开 DevTools → Elements 面板,搜索
,确认其
属性非空且已挂载到真实节点
脚本是否执行
:在
内放
,刷新页面——没输出才对;如果输出了,说明它被当普通 HTML 解析了(比如被错误地放在
外或未闭合)
资源是否加载
:放
在
里,检查 Network 面板——不应出现
请求
只要这三点满足,才是真正的 HTML5 模板机制在工作。
连第一步都过不了——它只是个空壳标签,连
属性都没有。
<_template><_template>...document.querySelector('template')content.cloneNode(true)
Default
Content here
<_template><_template><_template><_template><_template>contenttest.jpg<_template>content