通常,如果您使用Underscore.js进行模板化,则任何看起来像<% ... %>
和<%= ... %>
的表达式都会被Underscore.js解析
如果我想在文档中嵌入文本<% ... %>
,我该如何转义这样的值?
换句话说:我如何告诉Underscore.js忽略看似占位符的东西,但这不是占位符?
我想我必须使用某种转义,但通常的\
将不起作用。如果我输入
_.template('<%= name %> ### \<%= name %>', { name: 'foo' });
我得到了foo ### foo
,显然不是我想要的。
更新:为了更清楚,我想从上面的行 - 它应该导致
foo ### <%= name %>
答案 0 :(得分:3)
如果您的最终输出是HTML,则可以将<
和>
替换为其HTML转义码代码:
_.template('<%= name %> ### <%= name %>', { name: 'foo' });
你也可以modify Underscore's template settings支持这些事情,以便<%= ... %>
对下划线没有任何意义:
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g
};
var t = _.template('{{name}} ### <%= name %>', { name: 'foo' });
答案 1 :(得分:0)
对于非HTML特定解决方案,请使用unicode character escape sequences来转义<
,>
和%
。以您的示例为例:
_.template('<%= name %> ### \u003C\u0025= name \u0025\u003E', { name: 'foo' });
将输出
foo ### <%= name %>