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