私は最近、RoR ではなく JavaScript 内で html をエスケープするために、CoffeeScript の三重引用符構文を使い始めましたescape_javascript()
。しかし、切り替える前に知っておくべき2つの大きな違いがあるかどうか疑問に思っていました.
どちらか一方に利点はありますか?
私は最近、RoR ではなく JavaScript 内で html をエスケープするために、CoffeeScript の三重引用符構文を使い始めましたescape_javascript()
。しかし、切り替える前に知っておくべき2つの大きな違いがあるかどうか疑問に思っていました.
どちらか一方に利点はありますか?
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 はそれらに対して何もしませんが、二重引用符はエスケープされます。ただし、埋め込まれた三重引用符は、三重引用符で囲まれた文字列の末尾として解釈されるため、CoffeeScript から JavaScript への変換の前に ERB が来ると、問題が発生する可能性があります。
escape_javascript
生の文字列をCoffeeScriptの三重引用符で囲まれた文字列に投げ込むことを支持して、ドロップしないことをお勧めします。本当に三重引用符で囲まれた文字列を使用したい場合は、両方を実行します。
s = """<%=j @s %>"""
"""
しかし、それはsinceの無意味な使用であり、ほとんど同じこと"""
を行います (もちろん、組み込みによって混乱することを除いて)。escape_javascript
"""
"""