下划线模板 - 更改令牌标记

时间:2012-03-21 10:11:29

标签: javascript templates underscore.js

开箱即用的下划线模板使用标记<%= %>表示原始,<%- %>表示HTML转义内容。

我知道您可以使用以下内容更改标记:

_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;

但这与原始内容和转义内容有何关系?在我看来,你最终只得到一种标记。或者我忽略了什么?

1 个答案:

答案 0 :(得分:16)

Underscore.js documentation说明了这一点(重点补充):

  

如果ERB样式的分隔符不是您的茶,您可以更改Underscore的模板设置以使用不同的符号来设置插值代码。定义一个插值正则表达式以匹配应该逐字插入的表达式,一个转义正则表达式以匹配应该在HTML转义后插入的表达式,以及一个评估正则表达式来匹配应该在不插入的情况下评估的表达式结果字符串。

因此,您可以为_.templateSettings对象提供escape属性:

_.templateSettings.escape = /\{\{-(.*?)\}\}/g
>>> compiled = _.template("Escaped: {{- value }}\nNot escaped: {{ value }}")
>>> compiled({value: 'Hello, <b>world!</b>'})
"Escaped: Hello, &lt;b&gt;world!&lt;&#x2F;b&gt;
Not escaped: Hello, <b>world!</b>"