Node.js 是否将Express.js 2迁移到3,特别是将app.dynamicHelpers()迁移到app.locals.use?
将Express.js从版本2更新到版本3,以下对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
app.dynamicHelpers({..})
的调用中断,因为它不再出现在V3中:
app.dynamicHelpers({
request: function(req){
return req
},
...etc.
});
有一种说法是这样的:
(使用中间件+res.locals)app.dynamicHelpers()
相关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();
});
//...
});