res.locals.path = req.path; 是什么意思?在 node.js?
What does res.locals.path = req.path; in node.js?
我试着弄清楚这段代码的作用:
const app = express();
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
res.locals
通常用于将变量从中间件显示到模板引擎,模板引擎用于在后续请求处理程序(稍后在请求处理程序链中)中使用 res.render()
呈现页面。您可以阅读文档 here.
因此,这个特定的中间件使 req.path
可用于模板引擎(通过将该值放入 res.locals.path
以便它可以用于将页面呈现为 path
(不确定模板想要对路径做什么 - 这取决于它)。
请注意,调用 res.render()
的实际路由可以将数据作为 res.render()
的参数直接传递给模板引擎,但这不能通过中间件完成,因为中间件本身是不调用 res.render()
,因此它的替代方法是将数据放入 res.locals
,模板引擎可以从那里获取数据。
res.locals
开始时每个请求都是空的,因此它不包含任何内容,直到您的中间件或请求处理程序将内容放入其中以便为该特定请求呈现页面。
我试着弄清楚这段代码的作用:
const app = express();
app.use((req, res, next) => {
res.locals.path = req.path;
next();
});
res.locals
通常用于将变量从中间件显示到模板引擎,模板引擎用于在后续请求处理程序(稍后在请求处理程序链中)中使用 res.render()
呈现页面。您可以阅读文档 here.
因此,这个特定的中间件使 req.path
可用于模板引擎(通过将该值放入 res.locals.path
以便它可以用于将页面呈现为 path
(不确定模板想要对路径做什么 - 这取决于它)。
请注意,调用 res.render()
的实际路由可以将数据作为 res.render()
的参数直接传递给模板引擎,但这不能通过中间件完成,因为中间件本身是不调用 res.render()
,因此它的替代方法是将数据放入 res.locals
,模板引擎可以从那里获取数据。
res.locals
开始时每个请求都是空的,因此它不包含任何内容,直到您的中间件或请求处理程序将内容放入其中以便为该特定请求呈现页面。