Можно ли использовать express (). METHOD () / express (). Router (). METHOD () только один раз во вложенной маршрутизации? - PullRequest
0 голосов
/ 20 апреля 2019

Я новичок в экспрессе и изучаю Маршрутизатор экспресса.Мне не ясно, о 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...