微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Express Middleware为所有app.get()填充Jade变量

我有一个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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐