HTML5的template标签用于定义不渲染的可复用HTML片段,通过JavaScript克隆并插入DOM,适用于列表、卡片等动态内容,提升代码可读性和安全性。

HTML5 的 template 标签提供了一种在页面中定义可复用 HTML 模板片段的方法。这些模板不会在页面加载时被渲染,只有在 JavaScript 动态操作时才会被激活和插入到文档中。这种方法非常适合构建动态内容,比如列表项、卡片组件或模态框。
template 标签的特点
template 是一个内置的“惰性”容器,用于存放客户端的 HTML 模板。它的内容默认不渲染、不执行脚本、不加载图片,直到被 JavaScript 显式使用。
- 标签内部的 HTML 不会显示在页面上
- 其中的脚本不会运行,样式不生效
- 可以包含任何合法的 HTML 结构
- 可通过 JavaScript 克隆并插入到 DOM 中
定义可复用模板
使用 标签包裹你想要复用的 HTML 结构:
@@##@@
这个模板定义了一个用户卡片结构,但页面加载时不会显示。
立即学习“前端免费学习笔记(深入)”;
通过 JavaScript 使用模板
使用 JavaScript 获取模板内容,并将其克隆后插入到页面中:
本系统使用的是XDcms内核,在原来基础上做来相应修改 前台修改调用数据,可以使用{loop catid=栏目ID}{/loop}方式调用 主要功能: A、内容管理模型,自定义字段,更方便扩展功能。自带模型:单页模型、新闻模型、产品模型、招聘模型 B、栏目自定义,便于内容管理 C、内容模块化,二次开发更便捷。自带模块:幻灯片、QQ客服、友情链接、自定义表单(在线留言、简历管理) D、模板管理,后台
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.name;
clone.querySelector('.email').textContent = user.email;
clone.querySelector('.avatar').src = user.avatar;
container.appendChild(clone); // 插入到 DOM
});
每次调用 cloneNode(true) 都会创建一份独立的模板副本,避免相互影响。
适用场景与优势
template 标签适合以下情况:
相比 innerHTML 字符串拼接,template 更安全、结构更清晰,是现代前端开发中推荐的做法。
基本上就这些。合理使用 template 可以让 HTML 结构更整洁,JS 操作更直观。









