Jade - 模板引擎:如何检查变量是否存在

时间:2011-02-21 20:20:42

标签: node.js pug express

我目前正在一个新项目上使用Jade。我想渲染一个页面并检查某个变量是否可用。

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

关于如何解决此问题的任何想法?

7 个答案:

答案 0 :(得分:102)

这应该有效:

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

答案 1 :(得分:88)

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

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

这是有效的,因为有些具有讽刺意味的locals是模板的根对象。

答案 2 :(得分:10)

if 'username' in this
    p=username

这是有效的,因为res.locals是模板中的根对象。

答案 3 :(得分:6)

如果你事先知道你想要一个特定的变量,但并不总是使用,我已经开始向helpers对象添加一个“默认”值。

app.helpers({ username: false });

这样,您仍可以if (username) {进行灾难性故障。 :)

答案 4 :(得分:1)

本地对象中不应包含'用户名'吗?

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

if msg
  p= msg