Node.js 是否将Express.js 2迁移到3,特别是将app.dynamicHelpers()迁移到app.locals.use?

Node.js 是否将Express.js 2迁移到3,特别是将app.dynamicHelpers()迁移到app.locals.use?,node.js,express,Node.js,Express,将Express.js从版本2更新到版本3,以下对app.dynamicHelpers({..})的调用中断,因为它不再出现在V3中: app.dynamicHelpers({ request: function(req){ return req }, ...etc. }); 有一种说法是这样的: app.dynamicHelpers()(使用中间件+res.locals) 但我不知道该怎么做。有没有更具体的例子说明如何迁移 相关SO帖子:查看gith

将Express.js从版本2更新到版本3,以下对
app.dynamicHelpers({..})
的调用中断,因为它不再出现在V3中:

app.dynamicHelpers({

    request: function(req){
      return req
    },
    ...etc.
});
有一种说法是这样的:

  • app.dynamicHelpers()
    (使用中间件+res.locals)
但我不知道该怎么做。有没有更具体的例子说明如何迁移


相关SO帖子:

查看github上的示例文件夹。例如:

app.use(函数(请求、恢复、下一步){
var err=req.session.error,
msg=req.session.success;
删除req.session.error;
删除req.session.success;
res.locals.message='';
如果(err)res.locals.message='

'+err+'

'; 如果(msg)res.locals.message='

'+msg+'

'; next(); });

然后,您可以在模板中使用变量“message”。

reponse.locals.use是Express的一个新的有用功能,它允许您向模型发送一个首先需要计算的变量。比如说,您想向视图发送3个变量,所有这些变量都必须在向mongodb发出请求之后。“旧”方法是嵌套3个回调,当最后一个回调返回时,您将呈现视图。使用locals.use使这变得非常简单,因为它将评估函数,并且仅当所有函数都已评估时才渲染视图

下面是关于如何使用它们的一小段代码(这是coffee脚本,希望您可以将其转换为javascript:D)


在这种情况下,您可以在视图中使用名为myProperty的变量,该变量的值设置为myAsynchMethod发出回调的任何值。

我在会话中遇到了同样的问题。用户通过理解app.use函数需要在配置部分中设置为,从而解决了这个问题,不是以前的地方

之前:

app.configure();
app.dynamicHelpers({
  user: function(req, res) {
    return req.session.user;
  }
});
之后:

app.configure(function(){
  //...
  app.use(function(req, res, next){
    res.locals.user = req.session.user;
    next();
  });
  //...
});

对于Flash,请查看16票的解决方案是正确的,但请确保在开始之前使用
res.locals
分配
app.use(app.router)参考此帖子

在哪里使用response.local.use?它是在app.js中定义的还是在路由hanlder(req,res)->…如果是,何时调用渲染。。。
app.configure();
app.dynamicHelpers({
  user: function(req, res) {
    return req.session.user;
  }
});
app.configure(function(){
  //...
  app.use(function(req, res, next){
    res.locals.user = req.session.user;
    next();
  });
  //...
});