为什么在app.use中指定路径?

时间:2017-03-26 23:14:41

标签: node.js express

//app.js
var app = require('express')();
app.use('/test', require('./test'));



//test/index.js
var router = require('express').Router();

router.get('/test', function (req, res) {
    res.status(200).send("success");
});
module.exports = routes;

为什么需要在app.use和router.get中指定路径?如果我只是简单地添加app.use('/', require('./test'));,它似乎仍然可以正常工作。

2 个答案:

答案 0 :(得分:1)

通过指定router.get('/test', function (req, res),您的处理程序方法将处理以/ test结尾的任何请求。取决于路由器的位置use()

  

app.use(withPath,[callback ...]

将中间件函数tests安装在特定路径/test 因此,当基本请求url路径匹配时,将执行中间件test

答案 1 :(得分:1)

如果你改变了这个:

app.use('/test', require('./test'));

到此:

app.use('/', require('./test'));

然后你将拥有与使用./test模块在​​/test开头的路由上导出的中间件相同的功能,这样你就会体验到一切都会起作用,但是那个中间件还将处理不一定以/test开头的所有其他路线,这取决于它的作用和工作原理,可能是也可能不是你想要的。

通过在app.use()调用中使用某个路径,您可以限制仅加载到该路径的中间件。当您使用/时,它就像是在说“每条路径”,因为每条路径都以斜杠开头 - 即使是不包含斜杠的URL所请求的路径仍然使用斜杠请求,例如使用斜杠。与HTTP / 1.1类似:

GET / HTTP/1.1
Host: localhost