如何让 Nuxt 路由器更有活力?

Posted

技术标签:

【中文标题】如何让 Nuxt 路由器更有活力?【英文标题】:How to make Nuxt router more dynamic? 【发布时间】:2021-09-10 21:45:35 【问题描述】:

我目前正在用 vue 替换旧版应用程序。

我有一条复杂的路线,例如/foo/:category/:sub/:match。大多数时候,url 就像在那个路由定义中一样。对于一些流行 url 的 SEO 认为他们想要像 /veryPopularSub 这样的短 url。

是否可以为此注册别名?

类似:

 name: 'generic', path: '/foo/:category/:sub/:match' ,
 path: '/aSpecificShortcut', alias:  name: 'generic', params:  category: 1, sub: 2, match: 3   

访问aSpecificShortcut时浏览器不应重定向

【问题讨论】:

【参考方案1】:

如果您想在保持简单的同时为应用增加更多灵活性,可以使用router-extras-module。

可以这样使用

<router>

  alias: [
    'cool-fancy-alias',
  ]

</router>

<template>
...
</template>

不幸的是,这将不支持此处所述的动态路径:https://github.com/nuxt-community/router-extras-module/issues/132#issuecomment-725413491


可以尝试更深入的配置,如我的回答 here 中所述,但即便如此,我不确定您是否可以拥有这样的动态

export default 
  router: 
    extendRoutes(routes, resolve) 
      routes.push(
        
          name: 'foo-category-sub-match',
          path: '/foo/*/*/*',
          component: resolve(__dirname, 'pages/data/index.vue'),
          alias: 'fancy-path-name' // dynamic here?
        
      )
    
  

vue-router@4 有一些变化,完整列表在这里:https://next.router.vuejs.org/guide/migration/

与此同时,在 Nuxt3(由 Vue3 提供支持)发布之前,Nuxt 将无法使用此功能。不过,不确定是否即使在那里也可以支持。

有这个github issue,但不确定这是否可以推断为alias。也许在那里的项目上问它,@posva 负责路由器并在那里做一些很棒的事情。

【讨论】:

以上是关于如何让 Nuxt 路由器更有活力?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Nuxt.js 同时接受 `/` 和 `/index.html` URL?

如何让 Nuxt-auth 和 Nuxt-i18n 成为朋友

如何在 nuxt.js 中编写全局路由器功能

如何管理来自 API 的大量路由及其与 Nuxt 路由器模块的组件关联

如何使用 vue 路由器将道具传递到 nuxt 错误页面?

如何在 Nuxt 中使路由区分大小写