在expressjs渲染中干燥布局本地

Rya*_*yan 5 dry node.js express pug

我在nodejs中使用express,并试图让我的视图呈现干燥.在我的布局中,我有以下内容(我正在使用玉)

body
  nav.login
    -if(currentUser)
      ="logged in information"
    -else
      ="logged out information"
  !=body
Run Code Online (Sandbox Code Playgroud)

问题是,每次渲染时,我都需要拥有

res.render('anything.jade',{
  locals: {
    currentUser: req.session.currentUser,
    /*all of my other locals*/
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我必须将任何其他本地添加到布局中,那么必须完成所有渲染调用并添加它,然后执行相同的操作似乎很痛苦.是否有一些方法可以避免重新键入'currentUser'到我渲染的各地的本地人

小智 9

我知道这个答案已经很晚了,但是对于后人来说:如果你使用express,你应该使用提供的动态助手,它们是视图可访问的辅助函数,它们req,res作为参数.在你的情况下:

app.dynamicHelpers({
  user: function(req, res){
    return req.session.currentUser;
  }
});
Run Code Online (Sandbox Code Playgroud)

这意味着您的视图现在可以调用 #{user}