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

UpT*_*eek 8 javascript templates underscore.js

开箱即用的下划线模板使用<%= %>raw 标记和<%- %>HTML转义内容.

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

_.templateSettings.interpolate = /\{\{(.+?)\}\}/g;
Run Code Online (Sandbox Code Playgroud)

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

Fel*_*her 16

Underscore.js文档说,这(强调):

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

所以你可以给_.templateSettings对象一个escape属性:

_.templateSettings.escape = /\{\{-(.*?)\}\}/g
Run Code Online (Sandbox Code Playgroud)
>>> 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>"
Run Code Online (Sandbox Code Playgroud)

  • 啊谢谢 - 错过了那一点.如果他们要在示例代码中包含这两个设置会更有用. (2认同)