如何防止 Express 将模板脚本标签解释为实际的 EJS
How to keep Express from interpreting a template script tag as actual EJS
我在脚本标签中有一个简单的 EJS 模板,用于我的 HTML 中的 Backbone.js,如下所示:
<script type="text/template" id="template-wallets">
<% if(i === 0) {%>
<div class='wallet-box selected'>
<% } else {%>
<div class='wallet-box'>
<% }%>
<img src='api/identicon/<%= wallet.get('address') %>'>
<div class='wallet-label'><%= wallet.get('address').substring(0, 8) %></div>
</div>
</script>
但是,它所在的页面本身就是一个 EJS 页面,由 Express 提供服务。当页面被请求时,Express 将 script 标签的内容解释为 EJS 并尝试呈现它,由于显而易见的原因,这是有问题的。有没有什么办法可以转义脚本标记中的 EJS,使其按原样结束在页面上,准备好在客户端被 JavaScript 读取?
最简单的方法是更改ejs 的打开和关闭标签。例如:
res.render('backbone-template', { open: '<<', close: '>>' });
我在脚本标签中有一个简单的 EJS 模板,用于我的 HTML 中的 Backbone.js,如下所示:
<script type="text/template" id="template-wallets">
<% if(i === 0) {%>
<div class='wallet-box selected'>
<% } else {%>
<div class='wallet-box'>
<% }%>
<img src='api/identicon/<%= wallet.get('address') %>'>
<div class='wallet-label'><%= wallet.get('address').substring(0, 8) %></div>
</div>
</script>
但是,它所在的页面本身就是一个 EJS 页面,由 Express 提供服务。当页面被请求时,Express 将 script 标签的内容解释为 EJS 并尝试呈现它,由于显而易见的原因,这是有问题的。有没有什么办法可以转义脚本标记中的 EJS,使其按原样结束在页面上,准备好在客户端被 JavaScript 读取?
最简单的方法是更改ejs 的打开和关闭标签。例如:
res.render('backbone-template', { open: '<<', close: '>>' });