我最近开始使用 CoffeeScript 的三引号语法在 JavaScript 中转义 html 而不是 RoR 的escape_javascript()
. 但我想知道在切换之前我应该知道两者之间是否有任何重大差异。
一个比另一个有什么好处吗?
我最近开始使用 CoffeeScript 的三引号语法在 JavaScript 中转义 html 而不是 RoR 的escape_javascript()
. 但我想知道在切换之前我应该知道两者之间是否有任何重大差异。
一个比另一个有什么好处吗?
CoffeeScript 中的三引号不会转义任何东西,它们只是处理插值,去掉一些前导空格,并将嵌入的换行符转换为\n
; 当然,escape_javascript
也不对 HTML 做任何事情。例如:
s = """
<p>
Pancakes & stuff!
'single quotes'
"double quotes"
</p>
"""
变成:
var s;
s = "<p>\n Pancakes & stuff!\n 'single quotes'\n \"double quotes\"\n</p>";
单引号在双引号字符串中没有任何意义,所以 CoffeeScript 对它们什么都不做,但是双引号被转义了。但是,嵌入的三引号将被解释为三引号字符串的结尾,因此,如果您的 ERB 出现在您的 CoffeeScript 到 JavaScript 转换之前,您可能会遇到一些麻烦。
我建议不要放弃escape_javascript
将原始字符串放入 CoffeeScript 三引号字符串中。如果您真的想使用三引号字符串,那么您将同时执行以下操作:
s = """<%=j @s %>"""
但这将是毫无意义的使用"""
since"""
并且escape_javascript
做几乎相同的事情(当然"""
会被嵌入式混淆"""
)。