我使用 Node.js 和 Express Web 框架(和 EJS 模板引擎)。 当我必须打印变量时,我会执行以下操作:
<% if (value) { %>
<%= value %>
<% } %>
我可以在不打开其他括号的情况下做同样的事情吗?喜欢:
<% if (value) { PRINT VALUE } %>
这可能吗?如何打印变量?
我很惊讶地发现你显然无法做到这一点,就像在 PHP 中一样:
<?php if ($value) : ?>
<?php echo $value; ?>
<?php endif; ?>
然而,一个稍微更好的解决方案可能是这样做
<%= (value) ? value : '' %>
我这么说是假设情况有时可能会更复杂,即
<%= (str.length > 100) ? truncate(str) : str; %>
哪个比
好得多<% if (str.length > 100) { %>
<%= truncate(str) %>
<% } %>
即使这是一个稍微做作的例子。
按照您最初的问题,我很乐意看到直接命令来执行此操作。
现在有一个
outputFunctionName
参数可供您使用。根据文档:
设置为字符串(例如“echo”或“print”),以便函数在 scriptlet 标签内打印输出。outputFunctionName
<% console.log(posts) %>
注意:请确保在您拥有的任何其他文件中定义变量,例如 app.js 文件...
let posts = [];
app.get("/", (req, res) => {
res.render("home", {
posts: posts
});
});
经过一番努力我发现了这个,
<% if(userData.email != null){
__append('email found!');
or
__append(userData.email);
}%>
它在我的 Nodejs Express ejs 应用程序中运行良好