Node.js express 3.0如何使用app.locals.use和res.locals.use

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();}) 然后在任何路由中调用这个中间件 谢谢如果我理解正确,您可以执行以下

我在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.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();
});