use*_*421 0 javascript render node.js express
我正在使用 ares.redirect('page.ejs');并在我的浏览器上收到消息:
无法获取 /page.ejs
我没有在我的路由文件中以以下样式声明这一点:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
Run Code Online (Sandbox Code Playgroud)
这是否应该包括在内以res.redirect()使其工作?
当我不使用res.redirect()but 时res.render(),即使我没有app.get()代码,它仍然有效。
为了理解这一点,让我们看看这些方法的作用。
res.redirect('page.ejs');
Run Code Online (Sandbox Code Playgroud)
这将告诉 express 将您的请求重定向到GET /page.ejs端点。端点是您在上面描述的 express 方法:
app.get('/page', function(req, res) {
res.render('page.ejs');
});
Run Code Online (Sandbox Code Playgroud)
因为您没有定义该端点,所以它不起作用。如果您确实定义了它,它将执行该函数,并且该res.render('page.ejs')行将运行,这将返回该page.ejs文件。你可以返回任何你想要的东西,它可以是someOtherPage.ejs或者你甚至可以返回 jsonres.json({ message: 'hi' });
res.render('page.ejs');
Run Code Online (Sandbox Code Playgroud)
这只会用page.ejs模板响应客户端(前端/js/任何你想调用它的东西),它不需要知道另一个端点是否存在,它会返回page.ejs模板本身。
那么,这取决于你想根据场景使用什么。有时,一个端点无法处理请求,因此它将请求推迟到另一个端点,理论上,该端点知道如何处理请求。在这种情况下redirect使用。
希望这是有道理的,并澄清你的困惑
(我不是 express 内部工作的专家,但这是它在做什么的高级想法)
| 归档时间: |
|
| 查看次数: |
3674 次 |
| 最近记录: |