• Vue路由嵌套详解


    Vue路由嵌套详解


    嵌套路由又称子路由,在实际应用中,通常由多层嵌套的组件组合而成。

    demo

    1.创建用户信息组件,在 views/user 目录下创建一个名为 Profile.vue 的视图组件;

    <template>
    <h1>个人信息</h1>
    </template>
    
    <script>
    export default {
      name: "UserProfile"
    }
    </script>
    
    <style scoped>
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.在用户列表组件在 views/user 目录下创建一个名为 List.vue 的视图组件;

    <template>
    <h1>用户列表</h1>
    </template>
    
    <script>
    export default {
      name: "UserList"
    }
    </script>
    
    <style scoped>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.修改首页视图,我们修改 Main.vue 视图组件,此处使用了 ElementUI 布局容器组件,代码如下:

    <template>
      <div>
        <el-container>
          <el-aside width="200px">
            <el-menu :default-openeds="['1']">
              <el-submenu index="1">
                <template slot="title"><i class="el-icon-caret-right"></i>用户管理</template>
                <el-menu-item-group>
                  <el-menu-item index="1-1">
                    <!--插入的地方-->
                    <router-link to="/user/profile">个人信息</router-link>
                  </el-menu-item>
                  <el-menu-item index="1-2">
                    <!--插入的地方-->
                    <router-link to="/user/list">用户列表</router-link>
                  </el-menu-item>
                </el-menu-item-group>
              </el-submenu>
              <el-submenu index="2">
                <template slot="title"><i class="el-icon-caret-right"></i>内容管理</template>
                <el-menu-item-group>
                  <el-menu-item index="2-1">分类管理</el-menu-item>
                  <el-menu-item index="2-2">内容列表</el-menu-item>
                </el-menu-item-group>
              </el-submenu>
            </el-menu>
          </el-aside>
    
          <el-container>
            <el-header style="text-align: right; font-size: 12px">
              <el-dropdown>
                <i class="el-icon-setting" style="margin-right: 15px"></i>
                <el-dropdown-menu slot="dropdown">
                  <el-dropdown-item>个人信息</el-dropdown-item>
                  <el-dropdown-item>退出登录</el-dropdown-item>
                </el-dropdown-menu>
              </el-dropdown>
            </el-header>
            <el-main>
              <!--在这里展示视图-->
              <router-view />
            </el-main>
          </el-container>
        </el-container>
      </div>
    </template>
    <script>
    export default {
      name: "Main"
    }
    </script>
    <style scoped lang="scss">
    .el-header {
      background-color: #B3C0D1;
      color: #333;
      line-height: 60px;
    }
    .el-aside {
      color: #333;
    }
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    4.配置嵌套路由,修改router目录下的index.js路由配置文件,使用children作为main中的子模块
    index.js

    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'
    import Main from "../views/Main";
    import Login from "../views/Login";
    
    import UserList from '../views/user/List'
    import UserProfile from '../views/user/Profile'
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        },{
          path:'/main',
          component:Main,
          children:[
            {path:'/user/profile',component:UserProfile},
            {path:'/user/list',component:UserList},
          ]
        },{
          path:'/login',
          component:Login
        }
      ]
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    运行效果图
    在这里插入图片描述

    如果对您有帮助,免费的赞点一个~~~感谢🙏

    在这里插入图片描述

  • 相关阅读:
    Kaggle - LLM Science Exam(二):Open Book QA&debertav3-large详解
    基于沙猫群优化算法的线性规划求解matlab程序
    迅为RK3568开发板 buildroot 平台编解码测试
    协同办公:大打擂台赛
    第五届传智杯-初赛【B组-题解】
    [NAS] Synology (群晖) DSM同步数据到阿里云盘
    qt使用QWebEngineView加载百度地图失败
    MySQL行级锁Row-Level Locking及表锁Table-Level Locking 简介及示例
    用孙子兵法的智慧指导数据安全工作
    RabbitMQ与Erlang版本对应关系
  • 原文地址:https://blog.csdn.net/qq_41359998/article/details/123018218