EJS渲染模板
这段时间一直在使用 Express 框架,虽然官方推荐 Pug 作为模板引擎,但我还是对 EJS 更感冒,官方也提供了 Express -e
的选择,由于之前没有认真看文档,导致了前段时间遇到的一个渲染问题,纠结了很久才得以解决,这里笔记下 EJS 的常用方法,算作一次梳理,欢迎补充指正。
基本语法
<%=
: 转义输出<%-
: 不转义输出(即输出源码)<%#
: 评论注释<%
: 输出 JS<%_
: 输出 JS 并且删除标签之前所有的空格%>
: 正常闭标签-%>
: 移除标签后的换行符_%>
: 移除便签后的所有的空格
实例对比
EJS1
2
3
4
5<p>Hello, <%- myHtml %>.</p>
<p>Hello, <%= myHtml %>.</p>
<p><%# comment %></p>
<p>Hello, <%- myMaliciousHtml %>.</p>
<p>Hello, <%= myMaliciousHtml %>.</p>
Locals1
2
3
4{
"myHtml": "<strong>Leeon</strong>"
, "myMaliciousHtml": "</p><script>document.write()</script><p>"
}
HTML1
2
3
4
5<p>Hello, <strong>Leeon</strong>.</p>
<p>Hello, <strong>Leeon</strong>.</p>
<p></p>
<p>Hello, </p><script>document.write()</script><p>.</p>
<p>Hello, </p><script>document.write()</script><p>.</p>
参考:
作者: leeon
来源: https://leeon.im
链接: https://leeon.im/embeded-javascript-templates/
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可