下划线模板 - 更改标记符号

8

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

我知道你可以通过类似以下方式更改标记:

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

但是这与原始内容和转义内容有什么关系呢?在我看来,最终你只得到了一种类型的标记。或者我漏掉了什么吗?

1个回答

16
根据Underscore.js文档所说(强调添加):
如果ERB风格的分隔符不适合您,您可以更改Underscore的模板设置以使用不同的符号来设置插入代码。定义一个interpolate regex以匹配应该verbatim地插入的表达式,一个escape regex以匹配应该在HTML转义后插入的表达式,以及一个evaluate regex以匹配应该在结果字符串中不插入的表达式。
因此,您只需为_.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>"

2
啊,谢谢-我忽略了那一部分。不过如果他们把这两个设置都包含在示例代码中会更有用。 - UpTheCreek
想要在模板中使用花括号时也对JS(例如if语句)进行求值的用户,还应查看此答案:https://dev59.com/fXbZa4cB1Zd3GeqPBQsc#18411901(使用`evaluate`设置)。 - harvzor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接