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

html5 的 template 标签提供了一种在页面中定义可复用 HTML 模板片段的方法。这些模板不会在页面加载时被渲染,只有在 javascript 动态操作时才会被激活和插入到文档中。这种方法非常适合构建动态内容,比如列表项、卡片组件或模态框。
template 标签的特点
template 是一个内置的“惰性”容器,用于存放客户端的 HTML 模板。它的内容默认不渲染、不执行脚本、不加载图片,直到被 JavaScript 显式使用。
- 标签内部的 HTML 不会显示在页面上
- 其中的脚本不会运行,样式不生效
- 可以包含任何合法的 HTML 结构
- 可通过 JavaScript 克隆并插入到 DOM 中
定义可复用模板
使用 <template> 标签包裹你想要复用的 HTML 结构:
<template id="user-card-template"> <div class="user-card"> <img src="" alt="Avatar" class="avatar"> <h3 class="username"></h3> <p class="email"></p> </div> </template>
这个模板定义了一个用户卡片结构,但页面加载时不会显示。
立即学习“前端免费学习笔记(深入)”;
通过 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.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 操作更直观。


