是否可以通过快速中间件或其他方法将res.render
应用程序路径中的每个调用添加渲染数据(第二个选项).
我的应用程序使用护照进行身份验证,我希望中间件始终将用户信息附加到每个呈现的模板.
目前我的每个电话res.render
看起来都差不多.我想删除user : req.user
并添加到中间件功能.
// Page 1
res.render("somepage1",{data : "somepage1", user : req.user});
// Page 2
res.render("somepage2",{data : "somepage2", user : req.user});
Run Code Online (Sandbox Code Playgroud)
jos*_*736 34
快递确实提供了app.locals
和res.locals
,它会自动合并有明确的当地人中通过render
由路由处理.
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以热修补该render
功能.我想避免这种情况,因为它是额外的开销,但如果由于某种原因,你需要你的路由处理程序运行之前传递信息不可用,这是一个选项:
app.use(function(req, res, next) {
var render = res.render;
res.render = function(view, locals, cb) {
if (typeof locals == 'object') locals.user = req.user;
render.call(res, view, locals, cb);
};
next();
});
Run Code Online (Sandbox Code Playgroud)
Ada*_*luk 10
弄清楚了.
您可以在中间件中使用本地.
app.use(function(req, res, next){
res.locals.user = req.user;
next();
});
Run Code Online (Sandbox Code Playgroud)
然后在模板中使用.
<h1>User Name:{{user.name}}</h1>
Run Code Online (Sandbox Code Playgroud)
<h1>User Name:{{_locals.user.name}}</h1>
归档时间: |
|
查看次数: |
7119 次 |
最近记录: |