如何使用EJS模板引擎直接打印变量?

29

我正在使用Express web框架(和EJS模板引擎)的Node.js。 当我需要打印一个变量时,我会这样做:

<% if (value) { %>

<%= value %>

<% } %>

我能不能不打开其他括号就做同样的事情?例如:

<% if (value) { PRINT VALUE } %>

这可行吗?如何打印这个变量?


为什么你不直接使用 <%= value %> 呢? - Matt Ball
因为我想做类似于 <% if (value) { PRINT "foobar" } %> 这样的事情,如果满足这个条件,就勾选一个复选框或类似的东西。 - glasspill
3个回答

25

我很惊讶地发现,似乎你不能像在PHP中那样做:

<?php if ($value) : ?>
    <?php echo $value; ?>
<?php endif; ?>

然而,稍微更好的解决方案可能是这样做:

<%= (value) ? value : '' %>

我说这话是基于条件可能偶尔更加复杂的情况。

<%= (str.length > 100) ? truncate(str) : str; %>

这比较好看。

<% if (str.length > 100) { %>
<%= truncate(str) %>
<% } %>

即使这只是一个有点牵强的例子,我仍然希望能够展示一个直接的命令来完成它,如同您最初提出的问题。


12
甚至更短:<%= value || '' %> - Aaron Silverman
只需要使用 <%=' '%>,你可以将键放入其中并打印出该键的值,或者将一个字符串放在引号中并打印出来。 - Faizaan Gagan

0
现在有一个outputFunctionName参数可供使用。根据文档

outputFunctionName设置为字符串(例如'echo'或'print'),用于在脚本标记内打印输出的函数。


0

 <% console.log(posts) %> 

注意:确保在任何其他文件中定义您的变量,例如app.js文件...

let posts = [];

app.get("/", (req, res) => {
    res.render("home", {
        posts: posts
    });
});

Output


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接