I'm running express.js with jade. Now I realize that I need to send a user object to jade every time:

var renderObject = {
    navigation: [{
        url: "/",
        title: "Home"
    }],
    user: user
}
res.render('MyTemplate', renderObject);

However, I'm rather deep into the project and have a lot of routes where res.render is called. So now, lazy as I am, I started to look if there's a way to jack in to the renderer before the renderer is actually called.

Pseudocode:

 app.beforeRendering(function(template,renderObject,next) {
      renderObject.user = GLOBAL.myUserObject;
 })
有帮助吗?

解决方案

You can set properties on res.locals to be included in all renders:

res.locals.nav = [{
  url: "/",
  title: "Home"
}];
res.locals.user = user;

Or perhaps replace the whole object in one step:

res.locals = {
  navigation: [{
    url: "/",
    title: "Home"
  }],
  user: user
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top