在underscore.js的模板函数的上下文中插值意味着什么?

时间:2013-05-23 20:56:03

标签: javascript backbone.js underscore.js interpolation

我正在尝试理解下划线模板方法的标记类型之间的区别。

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

来自下划线的文档:

  

如果您希望插值并将其转换为HTML,请使用<% - ...%>

插值在这种情况下意味着什么?

3 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:2)

下划线会更改&lt; %%&gt;内的参数值声明例如&lt;% - firstName%&gt;获取传递给模板的JSON的属性firstname的值。 它意味着替换实际值的变量声明。 - =的差异只是如果你想要这个值被HTML scaped。

答案 2 :(得分:0)

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

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

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