如何在EJS中设置可选变量?
EJS模板处理可选变量的解决方案
问题场景
我需要在EJS模板中显示一个可选变量message,模板现有代码如下:
<h1>Title</h1> <%= message %>
调用模板时,有时不传任何参数:
app.render("page.ejs");
有时会传入message参数:
app.render("page.ejs", {message: "test"});
报错情况
当不传参数时,会抛出引用错误:
ReferenceError: /views/login.ejs:4 2| <h1>Title</h1> >> 3| <%- message %> message is not defined
尝试过的错误写法
以下写法无法解决问题,甚至会报错:
<%- message %>:不传参数时依然触发引用错误<%= message %>:不传参数时依然触发引用错误<%= if (message) message %>:直接抛出语法错误SyntaxError: Unexpected token 'if'
可行解决方案
参考相关问题后,以下几种写法可以解决报错问题:
- 通过
locals对象访问变量:<%= locals.message %> - 使用可选链操作符(需环境支持ES2020+):
<%= locals?.message %> - 如果需要解析变量中的HTML内容,可使用
<%-标签:<%- locals?.message %>
内容的提问来源于stack exchange,提问作者1.21 gigawatts
相关产品推荐
相关产品推荐

