将控制器variables传递给Express / Node.js中的视图

第一种方法

res.render('index',{people:people}); 

第二种方法

 res.locals.people = people; res.render('index'); 

我看到有2种方式来传递variables来查看,以上方法有什么不同的btw?

我认为他们是相同的传递variables渲染模板,但有一个区别。 您可以使用res.locals从中间件中传递variables。

res.locals

包含作用域为请求的响应局部variables的对象,因此仅可用于在请求/响应周期(如果有)期间呈现的视图。 否则,这个属性和app.locals是一样的。

此属性对于公开请求级别信息(如请求path名称,已validation用户,用户设置等)非常有用。

 app.use(function(req, res, next){ res.locals.user = req.user; res.locals.authenticated = ! req.user.anonymous; next(); }); 

从这个代码中,你将req.user传递给下一个中间件。