【问题标题】:Underscore templating - changing token markers下划线模板 - 更改标记标记
【发布时间】:2012-03-21 10:11:29
【问题描述】:

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

我知道您可以使用以下方式更改标记:

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

但这与原始内容和转义内容有何关系?在我看来,您最终只使用了一种标记。还是我忽略了什么?

【问题讨论】:

    标签: javascript templates underscore.js


    【解决方案1】:

    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>"
    

    【讨论】:

    • 啊,谢谢 - 错过了那一点。如果他们在示例代码中包含这两个设置会更有用。
    • 希望模板中的 JS(例如,if 语句)在使用大括号时也被评估的用户也应该看看这个答案:stackoverflow.com/a/18411901(使用evaluate设置)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多