2

我试图了解下划线模板方法的标记类型之间的区别。

具体来说,除了 HTML 转义之外,我试图找出下划线 <%- %> 标记和 <%= %> 之间的区别。这两种类型之间还有其他区别吗?

来自下划线的文档:

如果您希望插入一个值,并使其进行 HTML 转义,请使用 <%- ... %>

在这种情况下,插值是什么意思?

4

3 回答 3

4

这意味着评估和填充..

假设你有

让我们说在你转换后model attributes to JSON这是对象

{
   title : 'Hello World',
   escapeTitle : '<Hello World >'    
}; 

如果你这样做

<%= {{title}} %>         // Displayed as -- Hello World 
<%= {{escapedTitle}} %>  // Displayed as -- &#60;Hello World&#62;

但是如果你使用这个

<%- {{escapedTitle}} %>  // Displayed as -- <Hello World>

因此,如果用户想要转义,首先评估是否有任何字符,然后填充它

于 2013-05-23T21:50:14.710 回答
2

下划线将更改您的 <% %> 声明中的参数值,例如 <%-firstName %> 用于您传递给模板的 JSON 的属性 firstname 的值。这意味着将变量声明替换为实际值。- = 的不同之处在于,如果您希望这个值被 HTML 转义。

于 2013-05-23T21:50:28.100 回答
0

interpolate 意味着评估一个 javascript 表达式并将结果值放在模板数据中。例如:

_.template('Hello, <%- name %>', {name: 'Tony'})

将返回Hello, Tony。这是插值,与评估相反,您可以在其中使用控制流表达式或其他表达式,其目的不仅仅是计算将成为模板输出字符串一部分的值。

于 2013-05-23T21:51:26.790 回答