Express:在每个处理程序中部分渲染?

Express:在每个处理程序中部分渲染?,express,render,partial-views,Express,Render,Partial Views,我有一个使用Express和Pug的小网站。每个页面都有一个导航栏,其中包含从用户参数中提取的用户名,页面的主要内容位于下方,该页面使用数据参数。主要内容从扩展根模板的模板呈现。两者都需要自己的参数才能正确渲染 是否有方法在每个处理程序中部分呈现视图 var-app=require('express')() 应用程序集('查看引擎','哈巴狗') app.get(“/”,(请求、恢复、下一步)=>{ var userdata=“…” req.render('/index',{user:userd

我有一个使用Express和Pug的小网站。每个页面都有一个导航栏,其中包含从
用户
参数中提取的用户名,页面的主要内容位于下方,该页面使用
数据
参数。主要内容从扩展根模板的模板呈现。两者都需要自己的参数才能正确渲染

是否有方法在每个处理程序中部分呈现视图

var-app=require('express')()
应用程序集('查看引擎','哈巴狗')
app.get(“/”,(请求、恢复、下一步)=>{
var userdata=“…”
req.render('/index',{user:userdata}
next()//请求的是/page
})
app.get('/page',(请求、恢复、下一步)=>{
var moredata=“…”
请求呈现('./页/索引',{data:mroedata})
})

AFAIK这是不可能的,但作为替代方案,您可以使用实现类似的功能:

let userMiddleware = (req, res, next) => {
  let userdata = '...';
  res.locals.user = userdata;
  next();
});

app.use(userMiddleware);

// This can stay the same:
app.get('/page', (req, res, next) => {
   var moredata = '...'
   req.render('./page/index', {data: mroedata})
})
这是一个中间件,它将使
用户
变量可用于所有模板,在我看来这就是您想要的

您也可以将其用于特定路线,而不是全局应用:

app.get('/page', userMiddleware, (req, res) => ...);