我有这个NodeJS应用程序,它使用Jade作为模板语言。在一个特定页面上,从服务器检索一个文本块,该文本块从数据库中读取文本。
问题是,返回的文本可能包含换行符和链接,操作员可能随时更改此文本。如何正确显示这些元素?
大多数答案建议使用新的一行:
p
| this is the start of the para
a(href='http://example.com') a link
| and this is the rest of the paragraph
但是我不能这样做,因为我不知道a
元素何时出现。通过这个技巧,我已经解决了如何让换行更正:
p
each l in line.description.split(/\n/)
= l
br
但我似乎无法解决如何获得正确渲染的链接。有谁知道吗?
修改
我对数据库中的链接的任何格式都是开放的,无论什么可以解决问题。例如,假设数据库包含以下文本:
Hello!
We would like you to visit [a("http://www.google.com")Google]
然后我们希望输出如下所示的文本:
您好!
我们希望您访问Google
答案 0 :(得分:2)
看起来你正在寻找的是unescaped string interpolation。该链接在输出中不起作用,因为Pug会自动转义它。使用!{}
包装要插入的内容,它应该会停止断开链接。 (免责声明:确保不要保留未转义的用户输入 - 如果您确定数据库的内容中没有不需要的HTML / JS代码,则这只是一个可行的选项。)< / p>
请参阅this CodePen以获取说明。
使用此方法,您需要在数据库文本中使用标准HTML标记(<a>
)。如果您不想这样,可以查看Pug过滤器,例如markdown-it(您仍然需要取消该过滤器的编译输出)。