• 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

    生成的路由表

    1. router: {
    2.   routes: [
    3.     {
    4.       name: 'index',
    5.       path: '/',
    6.       component: 'pages/index.vue'
    7.     },
    8.     {
    9.       name: 'users-id',
    10.       path: '/users/:id?',  // params参数的router。   route.params.id
    11.       component: 'pages/users/_id.vue'
    12.     },
    13.     {
    14.       name: 'slug',
    15.       path: '/:slug',  // params参数的router。   route.params.slug
    16.       component: 'pages/_slug/index.vue'
    17.     },
    18.     {
    19.       name: 'slug-comments',
    20.       path: '/:slug/comments',  // params参数的router。   route.params.slug
    21.       component: 'pages/_slug/comments.vue'
    22.     }
    23.   ]

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

    动态生成nuxt路由

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

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

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

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

    1. import { sortRoutes } from '@nuxt/utils'
    2. export default {
    3.   router: {
    4.     // 禁用默认的路由生成
    5.     base: '/',
    6.     extendRoutes(routes, resolve) {
    7.       return [
    8.         // 添加你自定义的路由配置
    9. sortRoutes(routes)
    10.       ]
    11.     }
    12.   },
    13.   // ...
    14. }

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

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

    1. export default//nuxt2 不支持  
    2.   asyncData({ app, route }) { //$router: 路由操作对象 和  $route: 路由信息对象
    3.    app.router.push({ path: '/test', name: 'test', component: () => import('~/pages/test.vue') })
    4.   }
    5. }
    6. export default defineNuxtPlugin(({ $router })=>//nuxt3 支持
    7. $router.addRoute({ path: '/test', name: 'test' component: () => import('~/pages/test.vue') })
    8. })

  • 相关阅读:
    python编写修改sqlmap进行_WAF绕过
    删除自己在知乎的所有回答
    NCCL源码解析⑥:Channel搜索
    在 EMR 上使用 Delta Lake
    java毕业设计《EE开发技术》课程学习网站Mybatis+系统+数据库+调试部署
    软件杯 深度学习 python opencv 动物识别与检测
    【我的前端】CSS启示录:CSS写出超级美观的阴影效果
    CSRF和XSS是什么?
    【开发随记】【提效】工作习惯那些事系列之四——任务管理
    free -m 命令详解
  • 原文地址:https://blog.csdn.net/qq_42152032/article/details/134269360