Jade - convert new lines to <br/> and keep the content encoded

匿名 (未验证) 提交于 2019-12-03 02:00:02

问题:

I am still not that familiar with the Jade template engine. Is there a way to convert the new lines such as \n to br tags and at the same time keep the other content encoded?

For example

.replace(/\n/g,'') 

applied over the encoded value should do the work. However I am not sure how to encode the value and get the result. Is there any helper for this?

回答1:

You can use jades escape method and replace the linebreaks in the return value of that like so:

p !{escape(foo).replace(/\n/g, '
')}

I am not aware of any built-in functionality for your use case.


Looks like pug got rid of the escape function, so this is what you would have to use now:

p !{foo.replace(/&/g, '&').replace(/, '<').replace(/>/g, '>').replace(/\n/g, '
')}


回答2:

if you don't exactly need
, you can simply put your text within

 tag. All whitespaces (including new lines) will be displayed as typed.

Or you could set css rule white-space: pre to preserve whitespace preformatting. Check MDN on this.



回答3:

escape method, even converts simple space (' ') characters to "%20".

MDN says escape is deprecated and it is meant for encoding strings in url, not html content. Another solution,

each line in foo.split(/\n/)   = line   br 


回答4:

You can do that simple:

p !{someString.replace(/\n/g, '
')}

Note that this method will correctly escape string.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!