我有一个中间件(在sails.js中,一个基于 express 的框架)在数据库中查找内容,然后存储它在对象中找到的内容,因此我可以在布局/中使用它控制器。
目前,我将它存储在req
对象中,如下所示:
req.someStuff = 'Some stuff';
但是,我刚刚读到你也可以这样做:
res.locals.someStuff = 'Some stuff';
有什么区别?两者都设法完成相同的任务。感谢。
答案 0 :(得分:1)
基本上,你将res.locals传递给渲染引擎(假设你使用的是jade,ejs等)。当它呈现时,它可用于全局范围,因此您可以将它们称为命名(即。someStuff
而不是locals.someStuff
)。
someStuff
)。
简而言之,它只是提供了一种简单的方法,可以将某些内容传递给渲染模板,并使其可以通过全局范围访问。
一个例子(使用ejs)就像是
<% if(someStuff) { ... } %>
<!-- or even this -->
<% if(locals.someStuff) { ... } %>
编辑 - 我也刚刚意识到你发布了 req .someStuff vs res .someStuff。您可以通读那些相同的文档来查看它们之间的区别,但基本上一个是传入的请求对象,另一个是传出的响应对象。 (这是http所以请求 - 响应协议)