迁移Express.js 2到3,特别是app.dynamicHelpers()到app.locals.use?
从版本2更新到Express.js 3,以下调用app.dynamicHelpers({..})
因为它不再存在于V3中:
app.dynamicHelpers({ request: function(req){ return req }, ...etc. });
有一个移民指南说:
-
app.dynamicHelpers()
(使用中间件+ res.locals)
但我很难过如何做到这一点。 有一个更具体的例子如何迁移?
相关SOpost: nodejs express 3.0
我有session.user相同的问题,只是通过理解,app.use函数需要在configuration部分,而不是以前的位置。
之前:
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票的解决scheme是正确的,但一定要使用app.use(app.router);
之前的res.locals
分配app.use(app.router);
参考这篇文章https://stackoverflow.com/a/12597730/1132109
reponse.locals.use是Express的一个新的有用的function,可以让你发送一个variables给你的模型,首先需要进行评估。 比方说,你想发送3个variables到你的视图,所有这些都必须在请求一个mongodb之后。 “老”的方法是嵌套3callback,当最后一个回报你会呈现你的看法。 locals.use使得它更容易一些,因为它会评估你的函数,并只会在所有的评估结果都呈现你的视图。
下面是关于如何使用它们的一小段代码(这是咖啡脚本,希望你可以把它转换为javascript:D)
response.locals.use (request, response, done) -> myAsynchMethod (value) -> reponse.locals.myProperty = value done()
在这种情况下,将会有一个名为myProperty的variables,您可以在您的视图上使用它的值设置为任何myAsynchMethod给callback。
看看github上的例子文件夹。 例如auth :
app.use(function(req, res, next){ var err = req.session.error, msg = req.session.success; delete req.session.error; delete req.session.success; res.locals.message = ''; if (err) res.locals.message = '<p class="msg error">' + err + '</p>'; if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>'; next(); });
然后,您可以在模板中使用variables“消息”。