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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的JavaScript相关文章