如何在 ES6 中嵌套模板字符串?

Posted

技术标签:

【中文标题】如何在 ES6 中嵌套模板字符串?【英文标题】:How to nest template strings in ES6? 【发布时间】:2016-07-01 21:11:59 【问题描述】:

我从 eslint 收到 prefer-template 错误。对于解决方法,我将代码更改为在 require 函数内使用模板字符串,该函数嵌套在 url 函数内,如下所示:


  background: `url($require(`../../assets/$edge.node.name.toLowerCase().png` center no-repeat`))

但是,这显然是一个错误。这是我之前使用的代码,在require 函数中连接了一个加号,而不是模板字符串。


  background: `url($require('../../assets/' + edge.node.name.toLowerCase() + '.png')) center no-repeat`

是否可以定义嵌套的模板字符串?

【问题讨论】:

【参考方案1】:

是的,这是可能的,但由于某种原因,您将 )) 部分(关闭了 require 调用、内插值和 CSS url)放在了错误的位置:


  background: `url($require(`../../assets/$edge.node.name.toLowerCase().png`)) center no-repeat`
//                                                                             ^^^

也就是说,这可能是个坏主意,因为它并不能完全使代码可读。更好地使用变量:

const bgurl = require(`../../assets/$edge.node.name.toLowerCase().png`);
… 
  background: `url($bgurl) center no-repeat`

【讨论】:

感谢您的回复。那是我对演示的错误。但是,当我将其更改为url($require(../../assets/$edge.node.name.toLowerCase().png)) center no-repeat 时,这是一个语法错误。 @LVarayut:Worksforme。你到底遇到了什么错误? 谢谢@Bergi。是我对大括号的困惑。顺便说一句,我会采用你的第二种方法。

以上是关于如何在 ES6 中嵌套模板字符串?的主要内容,如果未能解决你的问题,请参考以下文章

ES6学习 第三章 字符串的扩展

如何使用 es6 模板文字作为 Angular 组件输入

js中模板字符串的使用

ES6模板字符串花样使用(循环,判断)

是否可以在 es6 模板字符串中添加评论?

是否可以在 es6 模板字符串中添加评论?