我正在使用res.redirect('page.ejs');
,并在浏览器中收到以下消息:
无法获取/page.ejs
我尚未在我的路线文件中以以下方式声明此内容:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
为了使res.redirect()
正常工作,是否应该包括这些内容?
当我不使用res.redirect()
而是使用res.render()
时,即使我没有app.get()
代码,它仍然可以正常工作。
答案 0 :(得分:3)
因此,为了理解这一点,让我们看一下这些方法中的每一个。
res.redirect('page.ejs');
这将告诉Express将您的请求重定向到GET /page.ejs
端点。端点是您上面描述的express方法:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
因为您没有定义该终结点,所以它将不起作用。如果您定义了它,它将执行该函数,并且res.render('page.ejs')
行将运行,这将返回page.ejs
文件。您可以返回任意内容,它可以是someOtherPage.ejs
,甚至可以返回json res.json({ message: 'hi' });
res.render('page.ejs');
这只会使用page.ejs
模板来响应客户端(前端/ js /无论您要调用什么),它不需要知道其他端点是否存在,它会返回page.ejs
模板本身。
因此,根据情况,您实际上要使用什么。有时,一个端点无法处理该请求,因此它将请求推迟到另一个端点,该端点理论上知道如何处理该请求。在这种情况下,将使用redirect
。
希望并能澄清您的困惑
(我不是Express内部工作的专家,但这是它在做什么的一个高级概念)
答案 1 :(得分:1)
您应该做res.redirect('/page')