在 Nuxt 中将多个新路径扩展到单个页面

Posted

技术标签:

【中文标题】在 Nuxt 中将多个新路径扩展到单个页面【英文标题】:Extend several new paths to a single page in Nuxt 【发布时间】:2021-09-01 01:06:55 【问题描述】:

我正在为一个项目的 nuxt 文件夹/路由结构而苦苦挣扎:

我想实现: 他们都应该显示pages/data/index.vue

www.example.com/data 
www.example.com/data/region
www.example.com/data/region/industry

然后通过$route-class访问参数区域或行业。

如果我添加_region 文件夹和_industy.vue,它将显示这些文件,我想显示和使用index.vue

【问题讨论】:

【参考方案1】:

编辑:因为regionindustry 可能是动态的。 您可以在 nuxt.config.js 文件中使用此设置

export default 
  router: 
    extendRoutes(routes, resolve) 
      routes.push(
        
          name: 'data-region-industry',
          path: '/data/*/*',
          component: resolve(__dirname, 'pages/data/index.vue'),
        ,
        
          name: 'data-region',
          path: '/data/*',
          component: resolve(__dirname, 'pages/data/index.vue'),
        ,
      )
    
  

使用此配置,您可以仅使用您的 index.vue 文件转到 /data/data/:region/data/:region/:industry。无需创建一些奇怪的目录或文件,您可以将所有内容放在一个地方。

PS:顺序是重要。将最具体的放在顶部,否则/data/* 也会捕获/data/*/*,而您将永远无法到达data-region-industry。这可以在 Vue 开发工具的 router 选项卡中快速进行双重检查。

这取自官方文档:https://nuxtjs.org/docs/2.x/features/file-system-routing#extendroutes 我强烈建议您阅读一下,尤其是如果您使用的是Named views。


至于 URL 捕获,从未听说过 $route-class,但您可以在 / 上进行某种拆分,非常可行!

【讨论】:

【参考方案2】:

您可以在网址中使用query 而不是params

www.example.com/data 
www.example.com/data/?region=x
www.example.com/data/?region=x&?industry=y

您仍然可以通过$route.query 访问查询数据。如果您不想使用查询,据我所知,您必须手动覆盖 nuxt 的 vue 路由器。

【讨论】:

谢谢。是的,我可以使用查询,但是它对 SEO 不太友好。因此我想使用参数。所以问题仍然存在 - 我如何强制/重写路由器:)

以上是关于在 Nuxt 中将多个新路径扩展到单个页面的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Nuxt 中将数据从组件传递到页面时出现错误消息

在 Linux 中将多个 jpg 合并为单个 pdf

在 emacs lisp 中将多个路径组件加入到单个完整路径中的正确方法是啥?

为啥范围样式没有加载到 nuxt 页面中?

Nuxt:如何在新标签页中打开页面

如何在我的扩展程序的新标签页中将其他扩展程序的新标签页加载为 iFrame