nuxt 路由 & 动态路由配置

router 路由基础

router会在服务器端和客户端执行

故对于router中接口axios调用需做判断

if(process.browser){

  baseURL = "/"

}else{ //node

baseURL = "http://127.0.0.1:8088/"

}

在Nuxt.js中,默认情况下,路由是根据.vue文件的目录结构自动生成的。  _id.vue 可以生成接收params参数的router

如果不知道 URL 结构的深度,您可以使用_.vue动态匹配嵌套路径( 处理 404 页面符合_.vue页面的逻辑  )

文件结构:

pages/

--| _slug/

-----| comments.vue

-----| index.vue

--| users/

-----| _id.vue

--| _.vue  

--| index.vue

匹配路径

/  =>  index.vue

/users/123  => users/_id.vue

/about _.vue

/about/careers _.vue

生成的路由表

router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {

      name: 'users-id',
      path: '/users/:id?',  // params参数的router。   route.params.id
      component: 'pages/users/_id.vue'

    },

    {
      name: 'slug',
      path: '/:slug',  // params参数的router。   route.params.slug
      component: 'pages/_slug/index.vue'
    },
    {
      name: 'slug-comments',
      path: '/:slug/comments',  // params参数的router。   route.params.slug
      component: 'pages/_slug/comments.vue'
    }
  ]

你会发现名称为 users-id 的路由路径带有 :id? 参数表示该路由是可选的如果你想将它设置为必选的路由需要在 users/_id 目录内创建一个 index.vue 文件。

动态生成nuxt路由

可以通过使用extendRoutes自定义路由配置来禁用默认的路由生成方式,从而实现不根据.vue文件目录结构生成路由。

以下是如何禁用默认路由生成的步骤:

在Nuxt项目的根目录下创建一个nuxt.config.js文件(如果已存在则跳过此步骤)。

在nuxt.config.js文件中添加一个router配置项。如果已存在router配置项,则修改或添加相应的选项。

import { sortRoutes } from '@nuxt/utils'

export default {

  router: {

    // 禁用默认的路由生成

    base: '/',

    extendRoutes(routes, resolve) {

      return [

        // 添加你自定义的路由配置

sortRoutes(routes)

      ]

    }

  },

  // ...

}

上述代码中的extendRoutes选项是一个函数,它可以让你自定义路由配置。你可以在这个函数中添加你所需的路由配置。

nuxt2中只能基于extendRoutes配置路由会在build编译阶段执行生成路由不支持在plugin插件中router.push动态添加路由。 nuxt3中支持在plugin中动态添加路由

详见:Dynamic add routes · Issue #13467 · nuxt/nuxt · GitHub

export default { //nuxt2 不支持  

  asyncData({ app, route }) { //$router: 路由操作对象 和  $route: 路由信息对象

   app.router.addRoute({ path: '/test', name: 'test', component: () => import('~/pages/test.vue') })

  }

}

export default defineNuxtPlugin(({ $router })=>{ //nuxt3 支持

  $router.addRoute({ path: '/test', name: 'test' component: () => import('~/pages/test.vue') })

})

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nuxt.js中,配置动态路由可以通过使用动态路由参数来实现。动态路由参数是指在路由路径中使用冒号(:)定义的参数,这些参数的值可以根据实际情况进行动态匹配。 下面是配置动态路由的步骤: 1. 在Nuxt.js项目的`pages`目录下创建一个文件夹,用于存放与动态路由相关的页面组件。 2. 在该文件夹下创建一个`.vue`文件,作为动态路由的页面组件。例如,创建一个名为`_id.vue`的文件,其中`id`是动态路由参数的名称。 3. 在`nuxt.config.js`文件中配置动态路由。找到`router`配置项,并添加一个`extendRoutes`属性,用于扩展路由配置。 ```javascript export default { // ... router: { extendRoutes(routes, resolve) { routes.push({ name: 'dynamic', path: '/dynamic/:id', // 定义动态路由路径 component: resolve(__dirname, 'pages/dynamic/_id.vue') // 指定对应的页面组件 }) } } } ``` 在上述代码中,我们定义了一个名为`dynamic`的路由,路径为`/dynamic/:id`,并指定了对应的页面组件。 4. 在动态路由的页面组件中,可以通过`this.$route.params`来获取动态路由参数的值。例如,在`_id.vue`文件中可以这样使用: ```vue <template> <div> <h1>动态路由页面</h1> <p>参数值:{{ $route.params.id }}</p> </div> </template> ``` 在上述代码中,我们通过`$route.params.id`获取了动态路由参数`id`的值,并在页面中进行展示。 这样,当访问`/dynamic/123`时,就会匹配到动态路由页面组件`_id.vue`,并且可以获取到参数值为`123`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李庆政370

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值