玉如果表现不一致

时间:2013-04-07 19:02:23

标签: css express pug

我正在使用expressjs,我在我的应用程序中有以下内容:

app.get('/profile',index.profile);
app.get('/',index.home);

并在layout.jade

...
if typeof(username)!=='undefined'
                    li: a(href='/logout') Log Out
                else
                    li: a(href='/register') Register
...

我的路由代码如下:

 exports.home = function(req,res){
if (typeof req.session.username == 'undefined')
    res.render('login',{title:'PageTitle'});
else
    res.redirect('/profile');
 };

exports.profile = function(req,res){
var show_devices = function(username,dev){
    res.render('home',{title:'Pagetutle', username: username,some other data..});
}
if (typeof req.session.username == 'undefined')
    res.redirect('/');
  ...

这是我的退出

 exports.logout = function(req,res){
req.session.destroy();
res.redirect('/');
 };

我第一次启动服务器时,我会进入列表Register,当我登录时我会Log Out,但是当我退出时,我也会得到Log Out。好像username会以某种方式幸存下来。如何从jade名称空间中删除username变量 - 我认为这是我的问题。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,但对我来说感觉很难看。

我像这样修改exports.home

exports.home = function(req,res){
if (typeof req.session.username == 'undefined')
    res.render('login',{title:'Smart Fridge',username:undefined});
else
    res.redirect('/profile');
};

当jade检查时,它发现用户名的类型未定义。有更好的解决方案吗?我需要检查类型是否未定义,因为layout.jade也是从其他页面呈现的,所以我觉得每次渲染页面时传递一些变量都很愚蠢,只是为了定义菜单的哪些元素应该是显示,哪些没有。