节点JS如何速成框架sendFile(“home.html”,{text?})?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (43)

我正在阅读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.rend()吗?两个函数似乎都不包含{username:req.body.username}等数据的选项。如何在航线之间传递数据?

提问于
用户回答回答于

默认情况下,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将变量和数据输入视图
  • 默认情况下,您不跨路由共享数据,除非应用程序级数据适用于所有用户,这些数据可以设置为app.locals
  • 你可以使用身份验证中间件(如护照)和会话中间件(如快捷会话)来跟踪每个会话的跨路由用户信息。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励