0

私は最近、RoR ではなく JavaScript 内で html をエスケープするために、CoffeeScript の三重引用符構文を使い始めましたescape_javascript()。しかし、切り替える前に知っておくべき2つの大きな違いがあるかどうか疑問に思っていました.

どちらか一方に利点はありますか?

4

1 に答える 1

3

CoffeeScript の三重引用符は何もエスケープしません。補間を処理し、先頭の空白を取り除き、埋め込まれた改行を\n;に変換するだけです。もちろん、escape_javascriptHTML でも何もしません。例えば:

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""""""

于 2012-07-15T19:34:04.983 に答える