Я новичок в экспрессе и изучаю Маршрутизатор экспресса.Мне не ясно, о 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 :
Это не работает.Я знаю, что это неправильный способ сделать маршрутизацию, но не понимаю, почему я получу Cannot GET / admin, когда я использую несколько METHOD(path, [callback, ...] callback)
во вложенной маршрутизации.когда запрос проходит app.get('/admin', shopRouter);
, выполняется роутер, который экспортирует из shopRouter.js.Но router.get(...)
не выполняется.Насколько я знаю, это запрос get, и URL-адрес для shopRouter равен '/'.Почему он пропускает функцию get?