首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >node JS express框架上下文(“home.html”,{sendFile?})

node JS express框架上下文(“home.html”,{sendFile?})
EN

Stack Overflow用户
提问于 2018-03-20 09:26:55
回答 1查看 324关注 0票数 0

我正在阅读Express框架文档,进行基本的登录/重定向页面路由。以下路由接受提交:

代码语言:javascript
复制
app.post('/',function(req,res){
//console.log("USERNAME: "+req.body.username);
//console.log("PASSWORD: "+req.body.password);
res.redirect('/chat');
});

还有这个:

代码语言:javascript
复制
app.get('/chat', function(req, res){
    res.sendFile(__dirname + '/templates/chat.html');
    //console.log("request");
});

将用户带到一个新页面。如何发送上下文?我应该使用res.render()吗?这两个函数似乎都不包含{username:req.body.username}这样的数据选项。数据应该如何在路由之间传递?

EN

回答 1

Stack Overflow用户

发布于 2018-03-20 09:40:12

通常,要使用express处理登录,可以使用诸如passport's local strategy之类的东西,它为您的每个路由将一个用户对象附加到请求对象(req.user)。我不知道您正在尝试的内容是否能在更大的上下文中工作--您至少需要某种基于会话的中间件,比如express-session,这样您就可以为每个会话附加变量(我认为它提供了req.session)。默认情况下,express能够存储一个请求/响应周期(res.locals)或整个应用实例(即所有用户)的信息(app.locals)。

至于将数据放入视图中,您可以将res.render与EJS、pug或其他视图引擎一起使用。例如,如果在您的路由中,您具有以下内容:

代码语言:javascript
复制
route.get('/', (req, res) => {
  res.render('template', { username: 'yourname' })
}

你可以像这样在你的ejs模板中引用它:

代码语言:javascript
复制
<h1>Hello, <%= username %>!</h1>

它将以如下形式返回:

代码语言:javascript
复制
<h1>Hello, yourname!</h1>

所以,为了回答你的问题:

  • 您可以使用res.render将变量和数据放入您的视图中
  • 默认情况下,您不会跨路径共享数据,但应用于所有用户的应用级数据除外,这可以在app.locals
  • You上设置。您可以使用身份验证中间件(如passport )和会话中间件(如express-session )来跟踪每个会话跨路由的用户信息。

希望这能有所帮助!祝你快递好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49374988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档