在EJS上打印原始html字符串

Rog*_*ves 35 node.js express

我正在使用带有EJS模板的express.js,我正在尝试做这样的事情:

<%= "<a href='#'>Test</a>" %>
Run Code Online (Sandbox Code Playgroud)

但它打印出来:

&lt;a href='#'&gt;Test&lt;/a&gt;
Run Code Online (Sandbox Code Playgroud)

我该如何打印"html safe"字符串?

ale*_*lex 59

您应该在任何地方使用html代码,并且只在需要动态数据的地方使用EJS标记.例:

<a href='<%= user.id %>'><%= user.name %</a>
Run Code Online (Sandbox Code Playgroud)

要专门回答您的问题,您可以使用<%- "<tags_here>" %>输出未转义的 HTML数据.

  • 啊如果你想要html不被转义,你应该这样做<% - partial('my_link')%> (40认同)
  • 有什么类似于来自PHP的回声,它允许您从`<%%>`语句中打印数据? (3认同)
  • 你仍然可以回答这个问题.如果其他人来看看这个问题,希望找到如何打印未转义的东西怎么办? (2认同)
  • 那是真的,我现在已经更新了答案.谢谢 (2认同)

Mig*_*jal 17

这是根据文档的可用选项

\n
    \n
  1. <% 'Scriptlet' 标签,用于控制流,无输出
  2. \n
  3. <%_ \xe2\x80\x98Whitespace Slurping\xe2\x80\x99 Scriptlet 标记,去除其前面的所有空格
  4. \n
  5. <%= 将值输出到模板中(HTML 转义)
  6. \n
  7. <%- 将未转义的值输出到模板中
  8. \n
  9. <%# 注释标签,不执行,不输出
  10. \n
  11. <%% 输出文字 '<%'
  12. \n
  13. %> 纯结束标记
  14. \n
  15. -%> 修剪模式('newline slurp')标签,修剪换行符后的内容
  16. \n
  17. _%> \xe2\x80\x98Whitespace Slurping\xe2\x80\x99 结束标记,删除其后的所有空格
  18. \n
\n

看起来您需要的选项是数字 4

\n


小智 14

对于ejs中的原始输出html,您可以使用此代码

<%- "<a href='#'>Test</a>" %>
Run Code Online (Sandbox Code Playgroud)