玉 – 模板引擎:如何检查variables是否存在
我正在使用一个新的项目玉。 我想渲染一个页面,并检查一个variables是否可用。
app.js
app.get('/register', function(req, res){ res.render('register', { locals: { title: 'Register', text: 'Register as a user.', } }); });
register.jade
- if (username) p= username - else p No Username!
我总是得到以下错误:
username is not defined
任何解决scheme
这应该工作:
- if (typeof(username) !== 'undefined'){ //-do something -}
如果您不介意testingfalsy值而不是未定义的值,那么比@Chetan的方法更简单:
if locals.username p= username else p No Username!
这是有效的,因为有点讽刺地命名的locals
是模板的根对象。
if 'username' in this p=username
这是因为res.locals是模板中的根对象。
如果你事先知道你想要一个特定的variables,但并不总是使用,我已经开始向helpers对象添加一个“默认”值。
app.helpers({ username: false });
这样,你仍然可以if (username) {
没有灾难性的失败。 🙂
本地对象中不应该包含“用户名”?
创build了一个中间件,让我的视图中的所有方法isDefined
可用:
module.exports = (req, res, next) => { res.locals.isDefined = (variable) => { return typeof(variable) !== 'undefined' }; next(); };