我完成了设置"失败"页面和"再试一次"按钮的教程挑战。该按钮将用户带回到'/signup/html'。我使用了
app.post("/failure", (req, res) => {
res.sendFile(__dirname + "/signup.html");
});
但是本教程使用的是res.redirect
方法。
结果是一样的,但是在后台发生的事情,使用res.redirect
和res.sendFile
?
谢谢,
表面上看,redirect
发出重定向,但sendFile
发送一个文件。
我将假设其他地方的代码通过发送相同的文件来响应教程所说的redirect
(假设是/signin
)使用的任何路径。所以看起来是一样的,但有重要的区别:
-
使用
redirect
意味着你只在一个地方指定文件名,而不是两个,这更便于维护。 -
如果在其他路由上设置了中间件(
/signin
或其他),该中间件将与redirect
一起运行,而不是与您的代码一起运行。 -
redirect
发送一个消息给浏览器,告诉它请求另一个URL;您的代码直接发送文件。 -
使用
redirect
,您可以指定要使用的redirect
HTTP状态码,例如,如果您想告诉客户端重定向是永久的(通过指定状态码302
,尽管在您的示例中可能不合适)。