我是新手,我正在学习快递路由器。我不清楚use([path], [function, ...] function)
和METHOD(path, [callback, ...] callback)
。
我知道前者将在(部分)请求url与路径匹配时触发回调,而后者将在请求方法和url匹配时触发回调。
app.js
const express = require('express');
const app = express();
const shopRouter = require('./routes/shopRouter');
//version 1
app.use('/admin', shopRouter);
//version 2
app.get('/admin', shopRouter);
shopRouter.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res, next) => {
res.sendFile(//a html file);
});
版本1 :
输入localhost:3000/admin
可以正常工作。我知道这很正常,因为当调用app.use('/admin', shopRouter);
时,将执行shopRouter中的代码,并且路由器将获得带有URL'/'的请求。 html文件将发送回客户端。
版本2 :
这不起作用。我知道这不是进行路由的正确方法,但是不理解为什么在嵌套路由中使用多个METHOD(path, [callback, ...] callback)
时为什么我无法获得/ admin。当请求通过app.get('/admin', shopRouter);
时,从shopRouter.js导出的路由器就会执行。但是router.get(...)
无法执行。据我所知,这是一个获取请求,并且将URL传递给shopRouter是'/'。为什么它会跳过get函数?