在ES6中嵌套反引号(`)的模板文字(多行string)
我如何在ES6中编写一个模板文字(多行string),其中包含反引号(`)本身(即嵌套反引号)。
例如:
var query = `UPDATE packet SET `association` = "3485435", `tagname` = "associated"`
我需要它的原因:
在我上面的代码示例中很明显。
我试图build立node-mysql查询作为Strings
,并将它们存储在一个variables中,以将它们传递给mySQL。 mySQL查询语法需要反引用UPDATE
风格的查询。
-
我可以让他们看起来整洁的唯一方法是使用模板文字,否则使用常规单行string的查询看起来有点可怕,因为他们最终是非常非常长的一些情况。
-
我也不想用
\n
结束行,因为它很麻烦。
从ES6深入:模板string由Jason Orendorff :
如果你需要在模板string中写一个反引号,你必须使用反斜杠来转义它:
`\``
是一样的。
您的查询应该是:
var query = `UPDATE packet SET \`association\` = "3485435", \`tagname\` = "Simos"`
使用\`,它似乎在最新的Chrome中为我工作。
如果你想在一个用撇号string构成的string中使用一个撇号,你可以用一个反斜杠来转义它:
'\''
同样的,如果你想在模板文本中使用反引号,你必须使用反斜线来取反:
`\``
请参见11.8.6模板文字词汇组件
没有replace的模板被定义为
NoSubstitutionTemplate :: ` TemplateCharacters opt `
模板angular色在哪里
TemplateCharacter :: $ [lookahead ≠ { ] \ EscapeSequence LineContinuation LineTerminatorSequence SourceCharacter but not one of ` or \ or $ or LineTerminator
因此, `
不能是一个模板字符,除非你通过前面的\
转义它。
就我个人而言,我认为ES6模板文字不适用于SQL(和降价),主要是因为您不能使用反引号字符。 我希望他们会添加三重引号string来解决这个问题。
与此同时,由于您可能正在使用ES6的转译器,因此您可以考虑使用三元组 (我声明:我是作者)。
ES6有新function
模板文字
和
标记模板文字(标记模板)
这使得使用string更容易。 你用“反引号”包装你的文本
有了这个我们可以:
1.Interpolatevariables
let foo = "abc"; console.log(`Welcome ${foo}`); // Welcome abc
2.插入任何一种expression方式
console.log(`2+3 = ${2+3}`) // 2+3 = 5
3.用“和”引号标注string,而不必转义任何东西。
let foo = `foo is 'bar', "bar" is foo` console.log(foo); // "foo is 'bar', "bar" is foo"
清理多行string的语法
let text = `foo is bar bar is foo` console.log(text); //"foo is bar //bar is foo"
5.Tagged模板,我们可以将模板文字传递给一个函数,方法如下:
let person = 'Mike'; let age = 28; let output = myTag `that ${ person } is ${ age }`; function myTag(strings, personExp, ageExp) { //strings[0] gets value "that " //strings[1] gets value " is " //personExp gets value " Mike " //ageStr gets value "28" return strings[0] + personExp + strings[1] + ageExp; } console.log(output); // that Mike is 28
6.String.raw,我们可以得到原始的forms,这里是例子:
let text = String.raw `The "\n" newline won't result in a new line.' console.log(text); // The "\n" newline won't result in a new line.
希望这可以帮助!!!!!!