游乐游手机版
首页/前端开发/文章详情

HTML模板实现动态列表项生成的方法

时间:2026-07-10 06:45
前端动态生成列表时,应使用createElement和textContent防XSS,用template与cloneNode(true)复用列表,DocumentFragment批量插入,并通过renderList全量重绘模拟响应式更新。

在前端开发实践中,动态生成列表是最常见的操作之一。然而稍有不慎,就可能引发 XSS 安全漏洞或性能瓶颈问题。以下是经过验证且值得信赖的实践原则:推荐使用 createElement 搭配 textContent 来防范注入攻击,模板字符串仅作为结构骨架使用;优先采用 template 标签结合 cloneNode(true) 实现列表模板的重复利用;在高频渲染场景中,利用 DocumentFragment 进行批量 DOM 插入以优化性能;若需模拟响应式数据更新,只需封装一个 renderList 函数执行全量重绘即可满足多数需求。

如何利用HTML模板实现列表项的动态生成

模板字符串内插入变量时如何避免被解析为纯文本

直接使用 innerHTML 拼接字符串存在风险,一旦变量中包含 <" 等特殊字符,不仅会破坏页面结构,还可能为 XSS 攻击打开方便之门。因此必须先进行转义处理再插入,或者直接选用更安全的替代方案。

推荐采用 document.createElementtextContent 的组合策略:每个字段单独通过 textContent 赋值,天然规避注入风险。如果确实需要渲染富文本内容,建议使用 DOMPurify.sanitize() 过滤后再交由 innerHTML 处理。

  • 避免编写 item.innerHTML = `
  • ${name}
  • ` —— 当 name 来自用户输入时,相当于给攻击者预留了后门
  • 推荐写法:const li = document.createElement('li'); li.textContent = name;
  • 模板字符串只用于搭建结构骨架,不嵌入变量:const template = `
      `

    template 标签与 innerHTML 在批量渲染列表时该如何选择