\\';const sanitized = escapeHTML`User input: ${userInput}`;console.log(sanitized); // Output: \\\"User input: \\\"

结论

标记模板文字为 JavaScript 中的动态字符串操作提供了多功能工具。它们可以简化国际化和自定义字符串格式等任务,从而生成更具表现力和可维护性的代码。

","image":"http://www.luping.net/uploads/20241007/17283092466703e7fece88e.jpg","datePublished":"2024-11-08T07:21:58+08:00","dateModified":"2024-11-08T07:21:58+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 了解 JavaScript 中的标记模板文字

了解 JavaScript 中的标记模板文字

发布于2024-11-08
浏览:990

Understanding Tagged Template Literals in JavaScript

什么是标记模板文字?

带标签的模板文字涉及以函数为前缀的模板文字,称为标签。该函数可以处理和操作文字的内容。这是一个简单的例子:

function tag(strings, ...values) {
    console.log(strings);
    console.log(values);
    return 'Processed string';
}

const name = 'Alice';
const greeting = tag`Hello, ${name}! How are you?`;
console.log(greeting);

标记模板文字的用例

  1. 国际化 (i18n)

带标签的模板文字可以根据用户的区域设置动态翻译字符串。这是使用日语的示例:

function i18n(strings, ...values) {
    const translations = {
        'Hello, ': 'こんにちは、',
        '! How are you?': '!元気ですか?',
    };

    return strings.reduce((result, str, i) => result   translations[str]   (values[i] || ''), '');
}

const name = 'アリス';
const greeting = i18n`Hello, ${name}! How are you?`;
console.log(greeting); // Output: "こんにちは、アリス!元気ですか?"

2. 自定义字符串格式

它们还可以实现自定义格式化逻辑,例如转义 HTML。

function escapeHTML(strings, ...values) {
    const escape = (str) => str.replace(/&/g, '&').replace(/, '<').replace(/>/g, '>');
    return strings.reduce((result, str, i) => result   str   escape(values[i] || ''), '');
}

const userInput = '';
const sanitized = escapeHTML`User input: ${userInput}`;
console.log(sanitized); // Output: "User input: <script>alert("XSS")</script>"

结论

标记模板文字为 JavaScript 中的动态字符串操作提供了多功能工具。它们可以简化国际化和自定义字符串格式等任务,从而生成更具表现力和可维护性的代码。

版本声明 本文转载于:https://dev.to/elukuro/understanding-tagged-template-literals-in-javascript-4m4p?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 根据您文章的内容,以下是一些适合问答格式的标题选项:

选项 1(直接):

* 如何从 OpentelemetryContext Pr 中的字符串跟踪 ID 构造跨度
    根据您文章的内容,以下是一些适合问答格式的标题选项: 选项 1(直接): * 如何从 OpentelemetryContext Pr 中的字符串跟踪 ID 构造跨度
    在 Opentelemetry 中根据跟踪 ID 构建 Span上下文传播通常用于检索父跟踪 ID 并创建子 Span。但是,在使用标头进行消息交换的情况下,需要替代方法。要从字符串跟踪 ID 创建范围,可以按照以下步骤操作:构造一个解析 Trace 和 Span ID 的函数:func const...
    编程 发布于2024-11-08
  • 如何将 JSON 字符串转换为 Python 字典?
    如何将 JSON 字符串转换为 Python 字典?
    如何将 JSON 字符串转换为 Python 字典JSON(JavaScript 对象表示法)是一种流行的数据格式,通常用于表示复杂的数据结构。在 Python 中,您可以使用 json 模块来处理 JSON 数据。一个常见的任务是将 JSON 字符串转换为 Python 字典。这允许您以键值对的形...
    编程 发布于2024-11-08
  • 治疗高血压的整体阿育吠陀方法
    治疗高血压的整体阿育吠陀方法
    管理高血压的整体阿育吠陀方法 阿育吠陀治疗高血压提供了一种自然和整体的方法来管理这一常见的健康问题。在阿育吠陀中,高血压通常与能量的不平衡有关,特别是皮塔和瓦塔。这种古老的医学体系旨在通过个性化治疗和生活方式改变来恢复平衡并促进整体健康。 治疗高血压的阿育吠陀疗法包括使用特定草药,如阿朱那、南非醉茄...
    编程 发布于2024-11-08
  • 如何设置 Y 轴范围以丰富多个子图布局中的可视化?
    如何设置 Y 轴范围以丰富多个子图布局中的可视化?
    设置子图轴范围背景在可视化中处理多个子图时,有必要控制每个子图的轴范围以确保正确的数据表示。本问题探讨如何在双子图布局中设置第二个子图的 y 轴范围。当 FFT 图出现异常尖峰,导致所需数据不可见时,就会出现此问题。解决方案要解决此问题,请在绘图后使用 pylab.ylim([bottom, top...
    编程 发布于2024-11-08
  • CSS 中的盒模型:制作精确布局的终极指南
    CSS 中的盒模型:制作精确布局的终极指南
    Web设计概念中,盒子模型(Box Model)是CSS中非常关注布局设计的基础知识领域。盒子模型解释了页面上元素的放置和定位方式,这会影响水平度和总体连贯性。 除了概述盒子模型的背景和边框之外,本指南还指导您完成填充、边距和盒子大小调整,以便您可以完全控制布局。要开始专业水平的 Web 项目设计,...
    编程 发布于2024-11-08
  • 什么是语法和语义
    什么是语法和语义
    如果您正在学习一门语言,您可能听说过“语法”这个词并且一直在处理它。 (该死的语法错误)。 几天前的晚上,我在想,我从来没有认真遵循过编程范式和技术,今天我开始从我经常听到的最小主题中学习(即使我已经记住了)。我创建了这个存储库。我采取的学习路径很有特色(在 LEARNING_LIST.md 文件中...
    编程 发布于2024-11-08
  • 如何在不切换焦点的情况下在后台打开新选项卡?
    如何在不切换焦点的情况下在后台打开新选项卡?
    在后台打开新选项卡而不进行焦点切换在这个问题中,用户寻求在单独的选项卡中打开新选项卡不会导致任何焦点转移到新选项卡。他们演示了使用 open() 和 focus() 方法的尝试,但在返回 Chrome 中的当前选项卡之前遇到了新选项卡的短暂闪烁。但是,提供的答案提供了使用事件的替代解决方案自定义事件...
    编程 发布于2024-11-08
  • 如何使用自定义语句扩展 Python 语法?
    如何使用自定义语句扩展 Python 语法?
    向 Python 语法添加新语句Python 的语法允许语句定义,例如 print、raise 和 with。虽然这些语句提供了广泛的功能,但可以扩展此语法以适应自定义语句。创建自定义语句涉及两个主要步骤创建自定义语句:修改语法: 您需要更新 Python 的语法以包含新的定义 陈述。这涉及到修改 ...
    编程 发布于2024-11-08
  • 使用 PHP 中的服务层模式实现简洁且可扩展的代码
    使用 PHP 中的服务层模式实现简洁且可扩展的代码
    服务层模式是一种流行的设计方法,用于处理 PHP 应用程序中的业务逻辑。通过将应用程序逻辑与框架分离,我们创建了一个可扩展、可测试和可维护的代码库。在本文中,我们将通过实际示例介绍服务层模式的基础知识、其优点以及如何在 PHP 应用程序中实现它。 什么是服务层模式? 服务层模式是在应...
    编程 发布于2024-11-08
  • 您能否在 C++ 中实现高效的二分搜索算法,将迭代器返回到搜索结果?
    您能否在 C++ 中实现高效的二分搜索算法,将迭代器返回到搜索结果?
    在 C 中搜索高效的二分搜索算法 程序员经常寻求实现高效的二分搜索算法,以提供对数时间复杂度的优势。一个常见的要求是算法返回一个指向搜索结果的迭代器,而不是一个指示其存在的简单布尔值。C 标准库在 标头中提供了 std::binary_search,但它仅返回一个布尔值。正如提问者所指出的,对于需...
    编程 发布于2024-11-08
  • 使用 Javascript 的心形图案代码
    使用 Javascript 的心形图案代码
    代码 let heart = ""; let size = 6; // Loop to print upper part of the heart for (let i = size / 2; i <= size; i = 2) { for (let j = 1; ...
    编程 发布于2024-11-08
  • 如何在 Chrome DevTools 中轻松识别和监控表单元素事件?
    如何在 Chrome DevTools 中轻松识别和监控表单元素事件?
    了解元素交互触发的事件要在可自定义表单元素上正确识别和处理事件,必须了解交互时触发的特定事件。 Chrome DevTools 提供了一个强大的工具,monitorEvents,来协助完成此过程。使用 monitorEvents()检查目标元素: 右键单击​​该元素并选择“Inspect”或在 De...
    编程 发布于2024-11-08
  • 为什么Go不支持传统继承?
    为什么Go不支持传统继承?
    Go中的继承Go为什么不支持传统类型继承?传统类型继承,即子类继承一个或多个父类的定义,不是 Go 编程语言的一项功能。创建者的基本原理在 Go 语言中FAQ,语言创建者解释说,面向对象的编程语言通常强调定义类型之间的关系,这些关系在 Go 中可以自动推断。 Go 类型不会显式指定类型关系,而是自动...
    编程 发布于2024-11-08
  • 如何在 Python 中创建虚拟环境
    如何在 Python 中创建虚拟环境
    Python 虚拟环境对于管理依赖关系和避免项目之间的冲突至关重要。本指南将引导您完成在 Python 中创建和激活虚拟环境的过程。 第 1 步:导航到您的项目目录 打开终端并导航到要设置 Python 虚拟环境的目录。您可以使用 cd 命令来执行此操作: cd /path/to/y...
    编程 发布于2024-11-08
  • 如何在 Go JSON 解组中处理嵌套数组?
    如何在 Go JSON 解组中处理嵌套数组?
    Golang JSON:通过解组处理嵌套数组在 Go 中,在解组后处理嵌套 JSON 数组时,理解错误至关重要“类型接口{}不支持索引。”当您尝试访问存储在interface{}变量中的JSON数组中的元素时,会出现此错误。要解决此问题,您需要利用类型断言将interface{}变量转换为底层数组类...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3