문제

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