ES6 中带有嵌套反引号 (\`) 的模板文字

新手上路,请多包涵

我如何在 ECMAScript 6 中编写一个模板文字,它本身包含反引号 (`)(即嵌套反引号)?

例如:

 var query = `
  UPDATE packet
  SET
  `association` = "3485435",
  `tagname` = "associated"
 `


我需要它的原因:

这在我上面的代码示例中非常明显。

我正在尝试将 node-mysql 查询构建为 Strings 并将它们存储在一个变量中以将它们传递给 MySQL。 MySQL 查询语法需要 UPDATE 样式查询的反引号。

  • 让它们看起来整洁的唯一方法是使用模板文字,否则使用常规单行字符串的查询看起来很糟糕,因为在某些情况下它们最终会变得很长。

  • 我还想避免使用 \n 终止行,因为它很麻烦。

原文由 nicholaswmin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 914
2 个回答

来自 Jason Orendorff 的 ES6 In Depth: Template strings

如果您需要在模板字符串中写入反引号,则必须使用反斜杠对其进行转义: `\``"`" 相同。

您的查询应该是:

 var query = `UPDATE packet
  SET
  \`association\` = "3485435",
  \`tagname\` = "Simos"`

原文由 tt9 发布,翻译遵循 CC BY-SA 3.0 许可协议

参见 11.8.6 模板文字词法成分

没有替换的模板定义为

NoSubstitutionTemplate ::
    ` TemplateCharactersopt `

模板字符在哪里

TemplateCharacter ::
    $ [lookahead ≠ { ]
    \ EscapeSequence
    LineContinuation
    LineTerminatorSequence
    SourceCharacter but not one of ` or \ or $ or LineTerminator

因此, ` 不能是模板字符,除非您通过在它前面加上 \ 来转义它。

原文由 Oriol 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题