В основном я пытаюсь либо динамически выбрать компонент для соответствующего маршрута, либо выполнить внутреннюю перезапись, чтобы я мог выбрать другой маршрут без изменения URL.
Мое решение прямо сейчас: у меня есть URL из внешний ресурс, который я хочу сопоставить, я ловлю их с помощью подстановочной страницы в Nuxt, используя _.js
. В промежуточном программном обеспечении на этой странице я определю фактический тип страницы (cmspage, productdetail, et c.) И поместу результат в магазин. Затем я бы проверил, найдены ли данные в функции проверки, чтобы я мог вернуть 404, если это необходимо. В случае успеха, будет использовать функцию рендеринга для рендеринга components/pages/cms.vue
или любого типа страницы.
Так что это должно работать (все еще требуется большая часть реализации), но у него есть проблема, которую я могу ' я не могу использовать множество функций Nuxt (middleware, asyncData, fetch, validate, more?), доступных для страниц, и это именно то, чего я пытаюсь достичь.
Это расширение конфигурации Nuxt не ' не работает, но будет идеально:
{
router: {
extendRoutes(routes, resolve) {
routes.push({
path: '*',
component: async () => {
const pageType = 'pdp' // await getPageType()
switch (pageType) {
case 'cms':
return resolve(__dirname, 'pages/cmsPage.vue')
case 'pdp':
return resolve(__dirname, 'pages/productDetailPage.vue')
case 'plp':
return resolve(__dirname, 'pages/productListPage.vue')
}
}
})
}
}
}