Маршрутизация для перевода url в nodejs express - PullRequest
1 голос
/ 09 июля 2019

Я хотел бы знать, как сделать маршрутизацию для перевода url в nodejs express

У меня есть следующие маршруты в app.js, я хотел бы знать, как это сделать лучше, скажем, если у вас более 5 языков, URL будет варьироваться в зависимости от языка, но идти по тому же маршруту. Как это сделать в экспресс-nodejs

app.js
app.use(/^\/(en|de)/, langRouter);
app.use(/^\/(en|de)\/((all-services-from|hui-kuan-cong)-(.+)-(to|zhi)-(.+))/, serviceRouter);
app.use('/:lang/route-services-services/:pr', aboutRouter);
app.use('/:lang/ain-jian-wen-ti/:pr', aboutRouter);


frontend urls,
will pass to langRouter
/en 
/de
will pass to serviceRouter
/en/all-services-from-sin-to-mal
/de/hui-kuan-cong-sin-zhi-mal
will pass to aboutRouter
/en/route-services-services/fund
/de/ain-jian-wen-ti/fund

1 Ответ

0 голосов
/ 09 июля 2019
app.use(/:locale*, checkLangRouter);

app.use(/:locale/, langRouter);

app.use(/:locale/:slug/, serviceRouter)

app.use('/:locale/:slug/:pr', aboutRouter);

Первый - это промежуточное ПО для проверки доступности локали.

В каждом маршрутизаторе проверьте слаг в зависимости от локали. Если это не соответствует, просто вызовите метод next() ...

//aboutRouter.js

module.exports = (req, res, next) => {
    const locale = req.params.locale;
    const slug = req.params.slug;

    const myMapping = {
         en: 'about',
         fr: 'a-propos',
         it: 'attorno'
    };

    if (myMapping[locale] !== slug) {
         // It's not the about route
         return next();
    }
};

В этом случае мы будем экспортировать отображение в другой файл, чтобы сделать его читаемым ...

...