标签模板字面量通过函数处理模板字符串,可实现如HTML转义等安全操作。

标签模板字面量(Tagged Template Literals)是 JavaScript 中一种强大的语言特性,它结合了模板字符串和函数调用,常被用作轻量级的模板引擎基础。
什么是标签模板字面量
标签模板字面量允许你使用一个函数来处理模板字符串。这个函数被称为“标签函数”,它接收解析后的字符串片段和表达式值。
语法如下:
myTag`Hello ${name}, you are ${age} years old.`等价于调用:
立即学习“Java免费学习笔记(深入)”;
myTag(['Hello ', ', you are ', ' years old.'], name, age)标签函数可以对这些参数进行任意处理,比如拼接、转义、国际化、生成 DOM 等。
实现一个简单的模板引擎
你可以利用标签模板构建一个简易但实用的模板引擎。例如,自动转义 HTML 防止 XSS 攻击:
function safeHtml(strings, ...values) { const escape = (str) => String(str).replace(/[&'"]/g, s => ({ '&': '&', '': '>', "'": ''', '"': '"' }[s]) ); let result = ''; strings.forEach((str, i) => { result += str + (i alert("xss")'; document.body.innerHTML = safeHtml`实际应用场景
标签模板在现代开发中有很多用途:
- CSS-in-JS 库:如 styled-components 使用标签模板定义组件样式。
- I18n 国际化:根据语言环境动态格式化带变量的文本。
- SQL 查询构造:安全地插入参数,防止注入(需配合数据库驱动)。
- DSL(领域特定语言):创建可读性强的配置或规则描述。
与传统模板引擎的对比
相比 Handlebars、Mustache 等外部模板引擎,标签模板的优势在于:
但它也有限制:逻辑复杂时代码可读性下降,不适合大型视图模板。
基本上就这些。标签模板字面量不是完整的模板引擎,但为构建小型、高效、安全的字符串处理提供了极佳基础。











