Handlebars学习之——HTML转义

# 场景 使用`{{expression}}`时,输出的内容会被转义,如:
1
<div>{{title}}</div>
context为
1
2
3
{
title: '<p>Hello world</p>'
}
结果生成html:
1
<div>&lt;Hello world&gt;</div>
最终在页面上显示的就是字符串`

Hello world

` 如果不想进行html的转义,有两种方法: * {{{ * SafeString # {{{ 在模板中将两个花括号替换成三个花括号,即可避免html字符串被转义
1
2
<div>{{title}}</div>
<div>{{{body}}}</div>
传入的context为
1
2
3
4
{
title: '<p>Hello world</p>',
body: '<p>Hello world</p>'
}
生成的结果:
1
2
<div>&lt;Hello world&gt;</div>
<div><p>Hello world</p></div>
页面上显示的就是
1
2
<p>Hello world</p>
Hello world
# SafeString Handlebars提供一个SafeString方法,使用这个方法返回的值即便在{{expression}}中也不会被转义 Handlebars模板:
1
{{sayhi}}
JavaScript:
1
2
3
4
Handlebars.registerHelper('sayhi', function(){
var str = '<p>Hello world</p>';
return new Handlebars.SafeString(str);
});

参考