HTML5的template标签用于定义不渲染的可复用HTML片段,通过JavaScript克隆并插入DOM,适用于列表、卡片等动态内容,提升代码可读性和安全性。
HTML5 的 template 标签提供了一种在页面中定义可复用 HTML 模板片段的方法。这些模板不会在页面加载时被渲染,只有在 JavaScript 动态操作时才会被激活和插入到文档中。这种方法非常适合构建动态内容,比如列表项、卡片组件或模态框。
template 标签的特点
template 是一个内置的“惰性”容器,用于存放客户端的 HTML 模板。它的内容默认不渲染、不执行脚本、不加载图片,直到被 JavaScript 显式使用。
- 标签内部的 HTML 不会显示在页面上
- 其中的脚本不会运行,样式不生效
- 可以包含任何合法的 HTML 结构
- 可通过 JavaScript 克隆并插入到 DOM 中
定义可复用模板
使用 标签包裹你想要复用的 HTML 结构:
@@##@@
这个模板定义了一个用户卡片结构,但页面加载时不会显示。
通过 JavaScript 使用模板
使用 JavaScript 获取模板内容,并将其克隆后插入到页面中:
const template = document.getElementById('user-card-template');
const container = document.getElementById('container'); // 放置模板实例的容器
// 示例数据
const users = [
{ name: 'Alice', email: 'alice@example.com', avatar: 'alice.jpg' },
{ name: 'Bob', email: 'bob@example.com', avatar: 'bob.jpg' }
];
users.forEach(user => {
const clone = template.content.cloneNode(true); // 克隆模板内容
clone.querySelector('.username').textContent = user.nam
e;
clone.querySelector('.email').textContent = user.email;
clone.querySelector('.avatar').src = user.avatar;
container.appendChild(clone); // 插入到 DOM
});
每次调用 cloneNode(true) 都会创建一份独立的模板副本,避免相互影响。
适用场景与优势
template 标签适合以下情况:
- 需要多次生成相似结构的内容(如评论列表、商品卡片)
- 前端模板替代方案,避免拼接字符串 HTML
- 提升代码可读性和维护性
- 与 Web Components 配合使用更强大
相比 innerHTML 字符串拼接,template 更安全、结构更清晰,是现代前端开发中推荐的做法。
基本上就这些。合理使用 template 可以让 HTML 结构更整洁,JS 操作更直观。

e;
clone.querySelector('.email').textContent = user.email;
clone.querySelector('.avatar').src = user.avatar;
container.appendChild(clone); // 插入到 DOM
});







