2017-02-03 5 views
0

テンプレート内のejsタグ自体をエスケープできますか?私はlayout.ejsejsテンプレート文字列の中でejsタグをエスケープする方法は?

<!--STYLES--> 
<% if (typeof head_css != 'undefined') { %> 
    <%= head_css %> 
<% } else { %> 
    <% if (typeof head_css_before != 'undefined') { %> 
    <%= head_css_before %> 
    <% } %> 
    <link rel="stylesheet" href="/styles/importer.css"> 
    <% if (typeof head_css_after != 'undefined') { %> 
    <%= head_css_after %> 
    <% } %> 
<% } %> 
<!--STYLES END--> 

が、デフォルトでは、次のコードを入れたい帆で

は、<!--STYLES--><!--STYLES END-->内のすべてのものは、このテンプレートに置き換えられます:

<link rel="stylesheet" href="%s"> 
sails-linker.jsのように

ので、代わりの、私は希望のテンプレート<link rel="stylesheet" href="%s">描画されたときの結果になるよりも、何かいくつかのより複雑なものを入れる:

<!--STYLES--> 
<% if (typeof head_css != 'undefined') { %> 
    <%= head_css %> 
<% } else { %> 
    <% if (typeof head_css_before != 'undefined') { %> 
    <%= head_css_before %> 
    <% } %> 
    <link rel="stylesheet" href="/styles/importer.css"> 
    <% if (typeof head_css_after != 'undefined') { %> 
    <%= head_css_after %> 
    <% } %> 
<% } %> 
<!--STYLES END--> 

しかし、私は

<%= special_code_here %><link rel="stylesheet" href="%s"> 

ような何かをしようとするときに問題がありますこれは自動的にレンダリングされます。私は<%をejsテンプレートの中でエスケープする必要があります。

どうすればこのことができますか?

+0

「<' and '>」のHTMLエンティティを試しましたか?「<」と「>」ですか? –

+0

@ScottMarcusはい、試しました。これの問題はlayout.ejsファイルのhtmlエンティティとしてレンダリングされました。そこにはエスケープされていない '<%'が必要です。だから、ブラウザには、私が持っているがプレーンテキストのようなコードが表示されます。 – GarouDan

答えて

1

<%%はEJSタグをエスケープし、ここであなたに<%

を与えるドキュメントです: EJS

私はこれが役立つはず正しくあなたの質問を理解していれば。

+0

私はすでにこれを試して、うまくいきませんでした。帆のように見えます(私が使用していたフレームワークは 'ejs-locals'に古いバージョンのejsを使用しています)。私はejs-localsのejsも更新しようとしましたが、まだ動作していませんでした。しかし、私の質問はejsに関するものだったので、私はこの答えを受け入れます。私はこれについてejsの問題を反対し、その男は問題をクローズし、私は全く問題を解決するのを助けませんでした。 – GarouDan

関連する問題