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

如果是,语法是什么? 我的目标是在“注释”这个词前面加上一个“ s”,如果有多个“注释”的话。在 JMVC 应用程序的 jQuery.ejs 模板中。以下是休息时间。我找不到任何附加条件的文件。

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
243858 次浏览

根据是否使用{}符号,EJS 的行为似乎有所不同:

我已经检查过了,下面的条件已经按照您的预期进行了评估:

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

而这个没有:

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

对于其他偶然发现这个问题的人,您也可以在条件语句中使用 ejs params/props:

文件:

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

文件:

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

如果条件句的结构正确,它们就能正常工作,我遇到了这个问题并解决了它。

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

错误!

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

没错

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

希望这有帮助。

还可以使用 else if语法:

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

是的,你可以像 if else、三值操作符或者甚至开关盒一样使用带有 EJS 的 If判断语句

例如

三元操作符 : <%- 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;


} %>

我知道这个回答有点晚,

您可以在 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
<% } %>

它会产生一个错误。

希望这能对某人有所帮助

只要让代码更短,你就可以使用 ES6的特性

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

圣殿骑士也可以被渲染成同样的效果!

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


一个简单而普遍的规则 为了将 javascript 例如(for 循环)嵌入到我们的 ejs 模板中,我们可以遵循以下规则:

  1. 首先在 ejs 模板中编写您的 javascript 代码,就像您通常在 javascript 中编写的那样。

  2. 在每个纯 javascript 行的开头和结尾分别放置 <% 和% > 。

例如:

if (num%2===0) {
<p> this is an even number</p>
} else {
<p> this is an odd number</p>
}

所以现在我们必须在每一行中放入 ejs 语法:

 <% if (num%2===0) {%>
<p> this is an even number</p>
<%} else { %>
<p> this is an odd number</p>
<%}%>