Node.js 在节点js中使用全局变量

Node.js 在节点js中使用全局变量,node.js,express,express-handlebars,Node.js,Express,Express Handlebars,我使用全局变量来存储用户信息,因为我需要在主模板中显示它们。 将用户信息存储在变量中是一种好的做法,还是有解决方法? 使用变量时是否存在性能问题 我尝试创建助手,但似乎不起作用 渲染时传递值也是不可能的,因为用户信息必须显示在导航栏上,导航栏是我的主模板的一部分。您需要中间件来处理用户信息。这是浏览器服务器体系结构中的正常情况。 您可以从会话中获得价值,如 app.use(function (req, res, next) { res.locals.login = req.isAuthent

我使用全局变量来存储用户信息,因为我需要在主模板中显示它们。 将用户信息存储在变量中是一种好的做法,还是有解决方法? 使用变量时是否存在性能问题

我尝试创建助手,但似乎不起作用

渲染时传递值也是不可能的,因为用户信息必须显示在导航栏上,导航栏是我的主模板的一部分。

您需要中间件来处理用户信息。这是浏览器服务器体系结构中的正常情况。 您可以从会话中获得价值,如

 app.use(function (req, res, next) {
 res.locals.login = req.isAuthenticated();
 app.locals.userinfo = req.user;    
 next();
});
会话对象是服务器中的一个常量obj,它有一个默认生存时间,也可以更改。
cookie会话是一种常见的体系结构,无论是nodeJs、java还是其他服务器端语言。你可以做一个类比,所有行为都是相似的。

为什么不将用户对象放在
res.locals
中?您现在拥有的中间件看起来不错,但我建议将用户对象设置为
res.locals
,我只是想知道这是处理用户信息的正确方法…将其输入变量中还是使用cookie作为@sinbar suggestedi使用快速会话进行cookie管理
//用于Passport应用程序。使用(会话({secret:'my key',resave:true,saveUninitialized:true}));//会话密钥app.use(passport.initialize());app.use(passport.session());//持续登录会话
我对node js不是很在行。请您指导如何进行此设置。您的要求是在浏览器上显示userinfo,对吗?因此,您只需将userinfo设置为会话中的一个键,并在需要时将其设置为响应。我更新了答案中的一些代码片段。让我尝试一下。将更新状态和谢谢你帮我。
app.get('/', function (req, res, next) {
  res.end(req.session.views + ' views')
})