正确使用 Express' res.render() 和 res.redirect()
Proper usage of Express' res.render() and res.redirect()
我正在使用 res.redirect('page.ejs');
,在我的浏览器上我收到消息:
Cannot GET /page.ejs
我没有在我的路由文件中以 :
的样式声明它
app.get('/page', function(req, res) {
res.render('page.ejs');
});
为了使 res.redirect()
起作用,是否应该包含此内容?
当我不使用 res.redirect()
而使用 res.render()
时,即使我没有 app.get()
代码,它仍然有效。
你应该res.redirect('/page')
为了理解这一点,让我们看看这些方法各自的作用。
res.redirect('page.ejs');
// or, more correctly, you're redirecting to an *endpoint*
// (not a page. the endpoint will render a *page*) so it should be:
res.redirect('/page');
这将告诉 express 将您的请求重定向到 GET /page.ejs
端点。端点是您在上面描述的快速方法:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
因为您没有定义该端点,所以它不会工作。如果您确实定义了它,它将执行该函数,并且 res.render('page.ejs')
行将 运行,这将 return page.ejs
文件。你可以 return 任何你想要的,它可以是 someOtherPage.ejs
或者你甚至可以 return json res.json({ message: 'hi' });
res.render('page.ejs');
这只会使用 page.ejs
模板响应客户端(前端/js/任何你想调用的),它不需要知道其他端点是否存在或不是,它是 returning page.ejs
模板本身。
那么,根据场景使用什么,就看你自己了。有时,一个端点无法处理请求,因此它将请求推迟到另一个端点,理论上,该端点知道如何处理请求。在这种情况下,使用 redirect
。
希望这有道理并能澄清您的困惑
(我不是 express 内部工作的专家,但这是对它正在做的事情的一个高级概念)
我正在使用 res.redirect('page.ejs');
,在我的浏览器上我收到消息:
Cannot GET /page.ejs
我没有在我的路由文件中以 :
的样式声明它app.get('/page', function(req, res) {
res.render('page.ejs');
});
为了使 res.redirect()
起作用,是否应该包含此内容?
当我不使用 res.redirect()
而使用 res.render()
时,即使我没有 app.get()
代码,它仍然有效。
你应该res.redirect('/page')
为了理解这一点,让我们看看这些方法各自的作用。
res.redirect('page.ejs');
// or, more correctly, you're redirecting to an *endpoint*
// (not a page. the endpoint will render a *page*) so it should be:
res.redirect('/page');
这将告诉 express 将您的请求重定向到 GET /page.ejs
端点。端点是您在上面描述的快速方法:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
因为您没有定义该端点,所以它不会工作。如果您确实定义了它,它将执行该函数,并且 res.render('page.ejs')
行将 运行,这将 return page.ejs
文件。你可以 return 任何你想要的,它可以是 someOtherPage.ejs
或者你甚至可以 return json res.json({ message: 'hi' });
res.render('page.ejs');
这只会使用 page.ejs
模板响应客户端(前端/js/任何你想调用的),它不需要知道其他端点是否存在或不是,它是 returning page.ejs
模板本身。
那么,根据场景使用什么,就看你自己了。有时,一个端点无法处理请求,因此它将请求推迟到另一个端点,理论上,该端点知道如何处理请求。在这种情况下,使用 redirect
。
希望这有道理并能澄清您的困惑
(我不是 express 内部工作的专家,但这是对它正在做的事情的一个高级概念)