[英]Express.js: Adding variables for EJS in request hook
我想在每个请求上呈现视图时添加一些EJS使用的变量,就像将它们与render函数中的变量一起添加一样:
res.render('view', {data: {my: 'object'}});
我有这个功能,我正在使用它作为我的请求挂钩:
app.use('/*', function(req, res, next) {
function after_request() {
console.log('called after');
}
function before_request() {
console.log('called before');
}
before_request();
res.on('finish', after_request);
next();
});
哪个工作正常:
called before
GET /url/param 304 30.762 ms - -
called after
如果仅在此处将变量设置为请求对象,则可以在路由中获取该变量并将其发送到render函数中,如下所示:
var variable = req.variable;
res.render('view', {data: {my: 'object', my: variable}});
但是,我希望不必在每条路线中都这样设置此变量。
有没有办法做到这一点?
您可以使用会话,它们使您可以在用户会话的所有请求上共享值。
更多信息: https : //github.com/expressjs/session
如果以下情况,我有时会使用res.locals
:
我不想使用会话或在页面之间保留相同的值,但是每次调用中间件时都会设置它
变量总是命名为相同
我使用哈巴狗/翡翠景色
那么你也能:
app.use(function(req, res, next){
res.locals.variable = "some content";
next();
})
在你看来
extends layout
block content
p= variable //'some content'
这样,您不必在每条路线中都设置变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.