我可以在EJS模板中使用条件语句(在JMVC中)吗?

时间:2011-11-21 18:49:13

标签: conditional-statements ejs

如果是,那么语法是什么? 我的目标是在有多个时,在'评论'这个词的前面添加's'。在JMVC应用程序的jQuery.ejs模板中。以下休息。我找不到条件的任何文档......

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>

7 个答案:

答案 0 :(得分:145)

对于偶然发现此事的其他人,您还可以在条件语句中使用ejs params / props:

recipes.js文件:

app.get("/recipes", function(req, res) {
    res.render("recipes.ejs", {
        recipes: recipes
    });
});

recipes.ejs文件:

<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>

答案 1 :(得分:138)

如果条件结构正确,条件法就可以工作了,我遇到了这个问题并想出来了。

对于条件,else之前的标记必须与之前if的结束标记配对,否则语句将单独评估并产生错误。

ERROR!

<% if(true){ %>
   <h1>foo</h1>
<% } %>
<% else{ %>
   <h1>bar</h1>
 <% } %>

正确

<% if(true){ %>
   <h1>foo</h1>
 <% } else{ %>  
   <h1>bar</h1>
<% } %>
希望这会有所帮助。

答案 2 :(得分:19)

EJS似乎表现不同,具体取决于您是否使用{}表示法:

我已经检查过,并按照您的预期评估以下条件:

<%if (3==3) {%>  TEXT PRINTED  <%}%>
<%if (3==4) {%>  TEXT NOT PRINTED  <%}%>

虽然这个没有:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  

答案 3 :(得分:14)

您还可以使用else if语法:

<% if (x === 1) { %>
    <p>Hello world!</p>
<% } else if (x === 2) { %>
    <p>Hi earth!</p>
<% } else { %>
    <p>Hey terra!</p>
<% } %>

答案 4 :(得分:11)

是的,您可以使用带有EJS的条件语句,如果是if,三元运算符甚至是switch case

例如

三元运营商<%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

切换案例

<% switch (role) {
case 'Admin' : %>
        Super Admin
        <% break;

case 'eventAdmin' : %>
        Event Admin
        <% break;

case 'subAdmin' : %>
        Sub Admin
        <% break;

} %>

答案 5 :(得分:0)

我知道这是一个有点晚的答案,

您可以按如下所示在ejs中使用if和else语句

<% if (something) { %>
   // Then do some operation
<% } else { %>
   // Then do some operation
<% } %>

但是我要强调的另一件事是,如果您以这种方式使用代码,

<% if (something) { %>
   // Then do some operation
<% } %>
<% else { %>
   // Then do some operation
<% } %>

它将产生错误。

希望这对某人有帮助

答案 6 :(得分:0)

只需缩短代码即可使用ES6功能。相同的东西可以写成

app.get("/recipes", (req, res) => {
    res.render("recipes.ejs", {
        recipes
    });
}); 

Templeate可以被渲染为相同!

<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>