【问题标题】:EJS - convert new lines to <br/> and keep the content encodedEJS - 将新行转换为 <br/> 并保持内容编码
【发布时间】:2015-10-26 16:14:16
【问题描述】:

这类似于Jade - convert new lines to <br/> and keep the content encoded

那么有没有简单的方法在 ejs 中做同样的事情:

<%- escape(foo).replace(/\n/g, '<br/>') %>

这可以通过从 ejs 中提取转义方法并分配给 res.locals 来实现,但如果可能的话,我正在寻找更优雅的东西

【问题讨论】:

    标签: node.js ejs


    【解决方案1】:

    当我不得不在我的页面中显示 git commit 消息时,我遇到了类似的问题。我查看了 GitLab 如何格式化提交消息,发现它们使用 white-space: pre-wraphttps://developer.mozilla.org/en-US/docs/Web/CSS/white-space

    所以在我的 .ejs 文件中我使用:

    <div style="white-space: pre-wrap"><%= commit.body %></div>
    

    【讨论】:

      【解决方案2】:

      您可以使用&lt;%= %&gt; 转义html,以及您已有的替换功能(假设foo 是一个字符串)。

      <%= foo.replace(/\r\n/g, '<br/>')) %>
      

      【讨论】:

      • 感谢您的回答,但这不是解决方案,因为 也对尖括号进行编码,因此输出将是“%3Cbr/%3E”而不是“
      • @Brankodd - 我想我不是 100% 了解需要什么(我根本不了解 Jade,所以它不是翻译)。 &lt;%= 使用编码尖括号是正确的。您是否尝试对所有字符进行编码 然后 将 \r\n 替换为
      • 是的,我粘贴的代码有问题(') %>),我想检查一下有一些更优雅的解决方案,但看起来它是最好的。
      猜你喜欢
      • 2013-01-10
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多