3

通常,如果你使用 Underscore.js 的模板,任何看起来像Underscore.js<% ... %>并被<%= ... %>解析的表达式

<% ... %>如果我想在模板中嵌入文本,如何转义这样的值?

换句话说:我如何告诉 Underscore.js 忽略看起来像占位符但不是占位符的东西?

我想我必须使用某种转义,但通常是\行不通的。如果我输入

_.template('<%= name %> ### \<%= name %>', { name: 'foo' });

结果我得到foo ### foo了,这显然不是我想要的。

更新:为了更清楚,我想要从上面的行中得到什么 - 它应该导致

foo ### <%= name %>
4

2 回答 2

3

如果您的最终输出是 HTML,您可以用他们的 HTML 转义代码替换<和:>

_.template('<%= name %> ### &lt;%= name %&gt;', { name: 'foo' });

你也可以修改 Underscore 的模板设置来支持这些东西,所以这<%= ... %>对 Underscore 没有任何意义:

_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g
};
var t = _.template('{{name}} ### <%= name %>', { name: 'foo' });
于 2013-01-30T20:14:43.797 回答
0

对于非 html 特定的解决方案,使用unicode 字符转义序列来转义<,>%. 使用你的例子,这个:

_.template('<%= name %> ### \u003C\u0025= name \u0025\u003E', { name: 'foo' });

将输出

foo ### <%= name %>
于 2018-11-30T14:30:53.450 回答