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

问题描述 投票:0回答:4

我使用 Node.js 和 Express Web 框架(和 EJS 模板引擎)。 当我必须打印变量时,我会执行以下操作:

<% if (value) { %>

<%= value %>

<% } %>

我可以在不打开其他括号的情况下做同样的事情吗?喜欢:

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

这可能吗?如何打印变量?

node.js express ejs
4个回答
25
投票

我很惊讶地发现你显然无法做到这一点,就像在 PHP 中一样:

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

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

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

我这么说是假设情况有时可能会更复杂,即

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

哪个比

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

即使这是一个稍微做作的例子。

按照您最初的问题,我很乐意看到直接命令来执行此操作。


0
投票

现在有一个

outputFunctionName
参数可供您使用。根据文档

outputFunctionName
设置为字符串(例如“echo”或“print”),以便函数在 scriptlet 标签内打印输出。


0
投票

 <% console.log(posts) %> 

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

let posts = [];

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

Output


0
投票

经过一番努力我发现了这个,

<% if(userData.email != null){ 
   __append('email found!'); 
   or
   __append(userData.email);
}%>

它在我的 Nodejs Express ejs 应用程序中运行良好

© www.soinside.com 2019 - 2024. All rights reserved.