导读:本期聚焦于小伙伴创作的《JavaScript中的模板字符串与标签模板有哪些高级用法?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript中的模板字符串与标签模板有哪些高级用法?》有用,将其分享出去将是对创作者最好的鼓励。

在JavaScript里,模板字符串用反引号包裹,除了基本的变量插入,它和标签模板配合能完成很多巧妙的事情。下面先通过一张图了解基本结构。

JavaScript中的模板字符串与标签模板有哪些高级用法?

模板字符串的基础高级特性

模板字符串天然支持多行文本和嵌入任意表达式,不必再用加号拼接。你可以在 ${} 里调用函数、做运算,甚至嵌套另一个模板字符串。

const name = '小明';
const score = 92;
const info = `
姓名:${name}
成绩:${score >= 60 ? '及格' : '不及格'}
计算:${ (score * 1.1).toFixed(1) }
`;
console.log(info);

嵌套模板字符串

当需要根据条件输出不同结构的文本时,嵌套写法非常直观:

const isAdmin = true;
const menu = `
<ul>
  ${isAdmin ? `
    <li>管理后台</li>
    <li>用户列表</li>
  ` : `
    <li>个人中心</li>
  `}
</ul>
`;
console.log(menu);

标签模板的原理与用法

标签模板不是什么新语法,而是一个函数调用写法:把模板字符串紧跟在一个函数名后面,该函数会接收到被拆开的字符串数组和所有插值。

基本标签函数

function tag(strings, ...values) {
  console.log('文本块:', strings);
  console.log('插值:', values);
  return strings.reduce((acc, str, i) => {
    return acc + str + (values[i] !== undefined ? values[i] : '');
  }, '');
}

const a = 10;
const b = 20;
const result = tag`求和:${a} + ${b} = ${a + b}`;
console.log(result);

用标签模板做HTML转义

处理用户输入时,可以利用标签模板统一转义,避免XSS问题:

function safeHtml(strings, ...values) {
  const escape = (s) => String(s)
    .replace(/&/g, '&')
    .replace(/</g, '<')
    .replace(/>/g, '>');
  return strings.reduce((acc, str, i) => {
    return acc + str + (values[i] !== undefined ? escape(values[i]) : '');
  }, '');
}

const userInput = '<script>alert(1)</script>';
const html = safeHtml`<div>${userInput}</div>`;
console.log(html);

国际化与格式化

标签模板也常用于i18n场景,根据key自动替换多语言文本:

const dict = { hello: '你好', name: '名字' };
function i18n(strings, ...keys) {
  return strings.reduce((acc, str, i) => {
    const k = keys[i];
    return acc + str + (k ? (dict[k] || k) : '');
  }, '');
}

const uname = '小红';
console.log(i18n`hello,你的name是 ${'hello'} ${'name'}:${uname}`);

常见注意点

  • 标签函数的第一个参数 strings 是一个原生带有 raw 属性的数组,可用 strings.raw 获取未转义的原始内容。
  • 模板字符串里的反引号或 ${ 需要使用反斜杠转义。
  • 标签模板返回什么完全由函数决定,不一定非要是字符串。
合理使用模板字符串与标签模板,能把原本散落的字符串处理集中成可复用的逻辑,让代码更安全易读。

小结

模板字符串不止是拼接工具,标签模板提供了一层拦截能力。掌握这些高级用法后,无论是渲染文本、做安全过滤还是实现轻量框架,都会更加得心应手。

JavaScript模板字符串标签模板修改时间:2026-07-26 20:42:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。