使用嵌入式Javascript语法直接输出到模板

Mik*_*rko 1 javascript backbone.js underscore.js underscore.js-templating

我正在使用Backbone和Underscore模板.if()我的代码中有一个JavaScript 条件,如下所示:

<div class='faces'>
    <% if(somevalue === true) { %>
       your face
    <% } else { %>
       my face
    <% } %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是我发现这个语法很尴尬,我真的想使用类似下面的东西,即使它实际上不起作用(用文本替换整个文档):

<div class='faces'>
    <% if(somevalue === true) { 
        document.write("your face");
    } else { 
        document.write("my face");
    }
</div>
Run Code Online (Sandbox Code Playgroud)

我希望在模板中输出字符串的确切位置.对于输出一个简单的变量EJS(和下划线)有一个很好的语法

<%= somevalue %>
Run Code Online (Sandbox Code Playgroud)

其中的=关键部分是document.write()模板中的关键部分.我正在努力实现的目标是什么?JavaScript输出内联吗?

mu *_*ort 7

有几个选项,你可以使用<%= %>和三元组:

<%= somevalue == true ? 'your face' : 'my face' %>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用print:

您也可以print在JavaScript代码中使用.这有时比使用更方便<%= ... %>.

var compiled = _.template("<% print('Hello ' + epithet); %>");
compiled({epithet: "stooge"});
=> "Hello stooge."
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

<% if(somevalue == true) { 
    print("your face");
} else { 
    print("my face");
} %>
Run Code Online (Sandbox Code Playgroud)

我认为这if(somevalue = true)是一个错字,应该是if(somevalue == true).