基本上,我试图为匹配的路由动态选择一个组件或进行内部重写,以便我可以选择其他路由而不更改url。
现在我的解决方案:我有一个我想匹配的外部资源的url,我正在使用Nuxt中的通配符页面捕获这些URL _.js
。在此页面上的中间件中,我将确定页面的实际类型(cmspage,productdetail等),并将结果放入商店中。然后,我将检查是否在validate函数中找到了数据,以便在需要时可以返回404。如果成功,则将使用render函数来渲染components/pages/cms.vue
或任何类型的页面。
So this should work (still need most of the implementation) but it has the problem that I can't use a lot of Nuxt features (middleware, asyncData, fetch, validate, more?) that are available for pages which is exactly what I'm trying to achieve.
This nuxt config extension doesn't work but would be perfect:
{
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')
}
}
})
}
}
}
我不确定我是否正确回答了这个问题,但我认为:
您要根据某些条件动态加载页面。
我有这个解决方案。