翡翠模板引擎: 如何检查变量是否存在

我现在在一个新项目中使用 Jade。我想呈现一个页面,并检查某个变量是否可用。

返回文章页面

app.get('/register', function(req, res){
res.render('register', {
locals: {
title: 'Register',
text: 'Register as a user.',
}
});
});

返回文章页面

- if (username)
p= username
- else
p No Username!

我总是得到以下错误:

username is not defined

有什么办法能解决这个问题吗?

72264 次浏览

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

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

这应该会奏效:

- if (typeof(username) !== 'undefined'){
//-do something
-}

比@Chetan 的方法更简单,如果你不介意测试虚假值而不是未定义的值:

if locals.username
p= username
else
p No Username!

这是因为具有讽刺意味的名称 locals是模板的根对象。

如果您事先知道希望某个特定变量可用,但并不总是使用,那么我已经开始向 helpers 对象添加“默认”值。

app.helpers({ username: false });

这样,您仍然可以执行 if (username) {而不会发生灾难性故障。 :)

if 'username' in this
p=username

这可以工作,因为 res.local 是模板中的根对象。

创建了一个中间件,使方法 isDefined在我的视图中随处可用:

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

更简单的是哈巴狗,玉的继承者

if msg
p= msg