構築しているNode.jsWebサーバーでEJSを使用しています。HTMLまたは文字列を出力するときに使用することがある多くのEJSの例を目にし<%=
ますが、他の例(同じテンプレート内にある場合もあります)はを使用します<%-
。
EJSドキュメントと入門ガイドを参照しようとしましたが、どちらも<%-
表記に関する情報を提供していませんでした。また、私のグーグル検索の試みは何も役に立たなかった。ありがとう!
Nodeで使用している可能性のあるEJSのバージョンは、Googleコードで表示されているバージョンと同じではありません。Nodeバージョンで<%=
は、HTMLをエスケープしてバッファに入れますが、エスケープ<%-
しません。ソース
<% 'Scriptlet' tag, for control-flow, no output
<%= Outputs the value into the template (HTML escaped)
<%- Outputs the unescaped value into the template
HTMLコードを保持する文字列を保持するいくつ<%=
かの変数をレンダリングする場合、そのHTMLコードはレンダリングされませんが、クロスサイトスクリプティング攻撃を回避するためにテキストとしてレンダリングされます。
マイナス(<%-
)を使用すると、これを回避して、実際にHTMLコードをレンダリングできます。
1)オプション1:ejsファイルは、たとえばreq.body値を保持する「noob」と呼ばれる変数をインポートしています。
<p><%= noob %></p>
2)オプション2:「partials」フォルダー内にある「myPartial.ejs」という部分テンプレートをインポートするejsファイル。
<p><%- include("./partials/myPartial") %></p>
3)オプション3:ejsファイルはjavascriptコードを使用しています:
<p>
<% while (i < 10) { %>
myVar += "The number is " + i;
i++;
<% } %>
</p>