在我的Express应用程序中,我可以设置app.locals
并直接在我的模板中使用它们(使用express-handlebars呈现)。但是,当我在中间件中设置res.locals
时,除非我将它们传入,否则它们不可用。我做错了吗?
服务器
app.locals.foo = "foo";
app.use(function(req, res, next) {
res.locals.bar = "bar";
next();
});
模板
{{foo}} {{bar}}
测试1
app.get("/", function(req, res) {
app.render("template.html", {}, function(error, html) {
res.send(html);
});
});
结果
foo
测试2
app.get("/", function(req, res) {
app.render("template.html", {bar: res.locals.bar}, function(error, html) {
res.send(html);
});
});
结果
foo bar
答案 0 :(得分:8)
res.locals
中提供了 res.render
。我怀疑你错误地打电话给app.render
,应该打电话给res.render
。
答案 1 :(得分:0)
只要应用程序启动,app.locals就可以在整个应用程序中使用。 res.locals仅在请求期间存在。