如何在Coffeescript中转义字符串插值

Dan*_*Dan 8 javascript coffeescript

我试图使用jQuery UI的选项卡示例中的这部分代码并将其转换为Coffeescript.我通过令人敬畏的http://js2coffee.org/工具运行它.

var tabTitle = $( "#tab_title" ),
    tabContent = $( "#tab_content" ),
    tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>",
    tabCounter = 2;
Run Code Online (Sandbox Code Playgroud)

问题是tabTemplate变量声明.据我所知,Coffeescript正在尝试对其进行字符串插值.我已经尝试用斜杠转义它,但这只是解决了在转换后的js中使用斜杠.

nic*_*ten 15

使用单引号来分隔您的字符串:http://coffeescript.org/#strings

如果要在字符串中使用单引号而不手动转义它们,可以使用3个单引号:

x = '''
my string's ok with single quotes and #{doesn't interpolate}
'''
Run Code Online (Sandbox Code Playgroud)

也就是说,这是HTML,因此双引号实际上比单引号更常见于属性.因此,您的字符串可以写成:

tabTemplate = '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>'
Run Code Online (Sandbox Code Playgroud)

没有任何问题.

  • 呸.这是我们能做的最好的吗?为什么双引号不起作用? (2认同)
  • 还是累.有没有办法逃脱整个字符串,就像C#与@"some\string"一样? (2认同)

mat*_*tyr 8

使用反斜杠转义确实有效:

$ coffee -bce '"\#{a}"'
"\#{a}";

$ coffee -bce '"#\{a}"'
"#\{a}";
Run Code Online (Sandbox Code Playgroud)