在underscore.js'的模板函数上下文中,interpolate是什么意思?

What does interpolate mean in the context of underscore.js's template function?

本文关键字:上下文 interpolate 是什么 意思 函数 js underscore      更新时间:2023-09-26

我试图理解下划线的模板方法的标记类型之间的差异。

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

来自下划线的文档:

如果您希望插入一个值,并使用html转义,请使用<%-…%>

在这个上下文中插补是什么意思?

表示求值和填充。

假设你有

假设在你转换了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>

首先计算是否存在用户想要转义的字符然后填充

Underscore将改变<% %>声明中参数的值,例如<%-firstName %>为传递给模板的JSON的属性firstname的值。它的意思是用实际值替换变量声明。

interpolate表示对javascript表达式求值,并将结果值放入模板数据中。例如:

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

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