玉 – 模板引擎:如何检查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

       

网上收集的解决方案 "玉 – 模板引擎:如何检查variables是否存在"

这应该工作:

 - 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可用,但并不总是使用,我已经开始添加一个“默认”值的助手对象。

 app.helpers({ username: false }); 

这样,你仍然可以if (username) {没有灾难性的失败。 🙂

本地对象中不应该包含“用户名”?

https://github.com/visionmedia/jade/tree/master/examples

创build了一个中间件,让我的视图中的所有方法isDefined可用:

 module.exports = (req, res, next) => { res.locals.isDefined = (variable) => { return typeof(variable) !== 'undefined' }; next(); };