我正在阅读Express框架文档,制作我的基本登录/重定向页面路由。 以下路线接受提交:
app.post('/',function(req,res){
//console.log("USERNAME: "+req.body.username);
//console.log("PASSWORD: "+req.body.password);
res.redirect('/chat');
});
和此:
app.get('/chat', function(req, res){
res.sendFile(__dirname + '/templates/chat.html');
//console.log("request");
});
将用户带到新页面。 如何发送上下文?我应该使用res.render()吗?这两个函数似乎都不包含{username:req.body.username}等数据的选项。如何在路线之间传递数据?
答案 0 :(得分:0)
一般来说,使用express来处理登录时,你会使用类似passport's local strategy的东西,它会为每条路径为你的请求对象(req.user
)附加一个用户对象。我不知道你正在尝试的东西会在更大的上下文中工作 - 你至少需要某种基于会话的中间件,比如express-session,所以你可以在每个会话中附加变量(I认为它给你req.session
)。默认情况下,express可以存储一个请求/响应周期(res.locals
)或整个应用实例(即所有用户)(app.locals
)的信息。
就将数据导入视图而言,您可以将res.render
与EJS,pug或其他视图引擎一起使用。例如,如果在您的路线中,您有类似的内容:
route.get('/', (req, res) => {
res.render('template', { username: 'yourname' })
}
你可以在你的ejs模板中引用它,如下所示:
<h1>Hello, <%= username %>!</h1>
将以此形式发回:
<h1>Hello, yourname!</h1>
所以,回答你的问题:
res.render
获取变量&amp;数据进入您的观点app.locals
上设置希望这有帮助!祝快递好运!