Node.js express 3.0如何使用app.locals.use和res.locals.use
我在express3.0rc2上。如何使用Node.js express 3.0如何使用app.locals.use和res.locals.use,node.js,express,Node.js,Express,我在express3.0rc2上。如何使用app.locals.use(它是否仍然存在)和res.locals.use 我看到了这个,但是app.locals.use抛出了一个错误。我假设一旦我将函数放入app.locals.use,我就可以在路由中使用它 我想加上 app.locals.use(myMiddleware(req,res,next){res.locals.uname = 'fresh'; next();}) 然后在任何路由中调用这个中间件 谢谢如果我理解正确,您可以执行以下
app.locals.use
(它是否仍然存在)和res.locals.use
我看到了这个,但是app.locals.use抛出了一个错误。我假设一旦我将函数放入app.locals.use,我就可以在路由中使用它
我想加上
app.locals.use(myMiddleware(req,res,next){res.locals.uname = 'fresh'; next();})
然后在任何路由中调用这个中间件
谢谢如果我理解正确,您可以执行以下操作:
app.configure(function(){
// default express config
app.use(function (req, res, next) {
req.custom = "some content";
next();
})
app.use(app.router);
});
app.get("/", function(req, res) {
res.send(req.custom)
});
现在,您可以在每个路由中使用req.custom变量。确保将app.use功能放在路由器之前
编辑:
确定下一次尝试:)您可以使用中间件并在所需的路由中指定它:
function myMiddleware(req, res, next) {
res.locals.uname = 'fresh';
next();
}
app.get("/", myMiddleware, function(req, res) {
res.send(req.custom)
});
或者您可以将其设置为“全局”:
我使用的是Express 3.0,这对我很有用:
app.use(function(req, res, next) {
res.locals.myVar = 'myVal';
res.locals.myOtherVar = 'myOtherVal';
next();
});
然后,我可以在我的模板中访问
myVal
和myOtherVal
(或直接通过res.locals
)。不,我想跨不同路线调用函数,我假设app.locals会帮我这么做,谢谢。但是,如果您检查了我发送的github链接,则定义了myMiddleware,然后调用app.locals.use(myMiddleware),从现在开始,route函数可以调用myMiddleware。但我无法做到这一点,因为app.locals.use会抛出一个错误。那么res.locals的概念是什么呢?使用(我理解res.locals)…再次感谢我如何在模板中访问uname?有点晚了,但是如果您定义app.locals.uname='fresh'
您应该能够在任何模板中访问它,因为它只作为uname
。我理解res.locals,但res.locals有什么问题。use.??res.locals
仅用于将值传递给模板res.locals.use
未定义,除非您指定它。看,我有点被“然后我就可以访问myVal和MyTherVal”这句话弄糊涂了,因为我认为这意味着你可以做一些类似于myVar+='anotherString'
,但实际上你仍然需要res.locals。部分i.e.res.locals.myVar+='anotherString'
。那就行了
app.use(function(req, res, next) {
res.locals.myVar = 'myVal';
res.locals.myOtherVar = 'myOtherVal';
next();
});