当前位置: 首页 > news >正文

es6中标签模板

之所以写这篇文章,是因为标签模板是一个很容易让人忽略的知识点

首先我们已经非常熟悉模板字符串的使用方法

const name = "诸葛亮"
const templateString = `hello, My name is ${name}`

标签模板介绍

这里的标签模板其实不是模板,而是函数调用的一种特殊形式

“标签”指的就是函数(函数名),紧跟在后面的模板字符串就是它的参数

比如,下面的代码可以正常运行

alert`hello world`

如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数

const name = '诸葛亮'
const age = 18console.log`hello ${name}, I know your age is ${age}`

控制台打印如下
在这里插入图片描述

const name = '诸葛亮'
const age = 18const tag = (stringArr, ...args) => {console.log('stringArr', stringArr)console.log('args', args)
}tag`hello ${name}, I know your age is ${age}`
// 相当于调用函数tag, tag(['hello ', ', I know your age is ', ''], '诸葛亮', 18)

控制台打印如下
在这里插入图片描述

使用场景

  • 过滤 HTML 字符串,防止用户输入恶意内容
function saferHTML(templateData) {let s = templateData[0];for (let i = 1; i < arguments.length; i++) {let arg = String(arguments[i]);s += arg.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");s += templateData[i];}return s;
}const string = '<script>alert("恶意代码")</script>';
const content = saferHTML`<p>${sender}富文本内容</p>`;
// <p>&lt;script&gt;alert("恶意代码")&lt;/script&gt;富文本内容</p>
  • 多语言转换
i18n`Welcome to China!`
// "欢迎来到中国!"
  • 将命令式编程转为声明式编程
// 命令式编程
const url = 'xxxxxxx'
a.style.color = "red"
a.style.backgroundColor = 'blue'
a.style.fontSize = '18px'
a.style.lineHeight = '26px'
a.href = `https://${url}`
a.target = '_blank'
a.textContent = '点击跳转'// 声明式编程
a.styles`color: red;backgroundColor: blue;fontSize: 18px;lineHeight: 26px;
`.props`href: `https://${url}`;target: '_blank';
`.content`点击跳转`
http://www.lryc.cn/news/294782.html

相关文章:

  • 二级C语言笔试1
  • Spring MVC跨域设置
  • 基于Python的HTTP隧道安全性分析:魔法背后的锁与钥匙
  • linux的stat/lstat函数和目录遍历函数使用
  • HTTP MIME 类型
  • Mac OS中创建适合网络备份的加密镜像文件:详细步骤与参数选择
  • Java TreeSet 添加自定义对象 必须指定排序规则
  • vue - 指令(一)
  • 正则表达式 regex
  • iOS自动打包如何用Python实现
  • springboot161基于springboot的公交线路查询系统
  • 大白话介绍循环神经网络
  • GEE——如何利用降水数据绘制指定区域长时间序列的降水分布图和提取每个月(逐月)的降水平均数据
  • 【软件使用】【edge】如何让edge的某个网页作为应用安装
  • 四大最受欢迎游泳耳机品牌,全球最好的游泳耳机排行榜测评
  • Linux实验记录:使用BIND提供域名解析服务
  • 基于单片机的智能寻光小车设计
  • 数据结构——A/复杂度
  • 锐捷VSU和M-LAG介绍
  • MYSQL——MySQL8.3无法启动
  • PyTorch识别验证码
  • 手把手教你开发Python桌面应用-PyQt6图书管理系统-图书类别信息表格数据显示以及搜索实现
  • 【HarmonyOS】鸿蒙开发之自定义组件——第3.7章
  • 初探unity中的ECS
  • 力扣:131. 分割回文串
  • 2024美赛数学建模B题思路源码
  • 线程的取消和互斥
  • 机器学习之DeepSequence软件使用学习1
  • 【Kotlin】Kotlin环境搭建
  • langgraph学习--创建基本的agent执行器