gpt4 book ai didi

javascript - underscore.template 的 _.templateSettings 的正确 mustache 模板配置是什么?

转载 作者:行者123 更新时间:2023-11-29 22:17:26 25 4
gpt4 key购买 nike

我四处搜索,找不到真正有效的。

在 Mustache 中,当你抛出 2 curly 时,里面的字符串会被转义,而如果你抛出 3,则不会。

// when you pass {foo: '"bar"'} as hash, the following template will be: 
{{foo}} // => "bar"
{{{foo}}} // => "bar"

对吧?所以我创建了以下内容。

http://jsfiddle.net/beatak/6s5PU/

这显示了相反的插值和转义,这意味着 2 curl 表示未转义,3 表示转义。当我在 _.templateSettings 中的 escapeinterpolate 之间切换时,它就是不起作用。为什么? Underscore 模板优先于这三个(escapeinterpolateevaluate)?

我知道我现在忽略了 jsfiddle 上的 evaluate,如果它们一起工作那就太棒了,但现在,我想让 2 和 3 curly 工作得很好......

最佳答案

搜索转义的正则表达式,然后进行插值,然后求值。这就是为什么你的转义形式 {{ }}在你未转义的形式之前匹配 {{{ }}} .您可以在源代码中自行更改 _.template 的顺序.

var matcher = new RegExp([
(settings.escape || noMatch).source,
(settings.interpolate || noMatch).source,
(settings.evaluate || noMatch).source
].join('|') + '|$', 'g');

改变上面几行的顺序会改变优先级。

如果不想改变下划线优先级,可以使用更复杂的转义正则表达式。没有消极的回顾是很棘手的,但我想出了:

/\{\{([^\{\}]+?)(?!\}\}\})\}\}/

这应该意味着:{{ , 后跟一个或多个非大括号 字符,后面不应跟三大括号 ( }}} ),后跟双大括号 }} .它适用于您的 fiddle ,希望对您有用。

关于javascript - underscore.template 的 _.templateSettings 的正确 mustache 模板配置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267191/

25 4 0