我有一个Jade文件,我的所有模板都扩展名为layout.jade.在其中我希望能够在用户当前登录时具有注销按钮(这在req.session中保持跟踪).
所以layout.jade会有类似的东西,
-if (loggedin) a.navButton(href="/logout") Log Out
页面的路径看起来像,
app.get("/foo",function(req,res) { res.render("foo",{loggedin: req.session.isValidUser}); });
问题是,我不想在每个路由中手动填充登录变量.有没有办法可以使用Express中间件自动为发送到res.render的对象设置一些默认选项?或者有更好的方法来做到这一点?
解决方法
看起来这实际上是一个记录在案的功能,我只是很难找到,除非有人有更好的方法去做;从最新的
Express documentation,
app.locals: Application local variables are provided to all templates
rendered within the application. This is useful for providing helper
functions to templates,as well as app-level data.
req.session.username = profile.username; app.locals.username = profile.username;
app.get('/logout',function (req,res) { delete app.locals.username; req.session.destroy(); res.redirect('/login'); });
最后在layout.jade /我的所有模板中,
- if(username) a.navButton(href="/logout") logout