• VueRouter 嵌套路由


    什么是嵌套路由

    嵌套路由又称子路由,在实际应用中,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如:

    1. /user/foo/profile /user/foo/posts
    2. +------------------+ +-----------------+
    3. | User | | User |
    4. | +--------------+ | | +-------------+ |
    5. | | Profile | | +------------> | | Posts | |
    6. | | | | | | | |
    7. | +--------------+ | | +-------------+ |
    8. +------------------+ +-----------------+

    创建嵌套视图组件

    创建嵌套视图组件

    用户信息组件

    在 views/user 目录下创建一个名为 Profile.vue 的视图组件;该组件在当前章节无任何作用,主要用于展示嵌套效果;

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

    用户列表组件

    在 views/user 目录下创建一个名为 List.vue 的视图组件;该组件在当前章节无任何作用,主要用于展示嵌套效果;

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

    配置嵌套路由

    修改 router 目录下的 index.js 路由配置文件,代码如下:

     1 import Vue from 'vue'
     2 import Router from 'vue-router'
     3 import Login from "../views/Login"
     4 import Main from '../views/Main'
     5 // 用于嵌套的路由组件
     6 import UserProfile from '../views/user/Profile'
     7 import UserList from '../views/user/List'
     8 Vue.use(Router);
     9 export default new Router({
    10   routes: [
    11     {
    12       // 登录页
    13       path: '/login',
    14       name: 'Login',
    15       component: Login
    16     },
    17     {
    18       // 首页
    19       path: '/main',
    20       name: 'Main',
    21       component: Main,
    22       // 配置嵌套路由
    23       children: [
    24         {path: '/user/profile', component: UserProfile},
    25         {path: '/user/list', component: UserList},
    26       ]
    27     }
    28   ]
    29 });

    说明:主要在路由配置中增加了 children 数组配置,用于在该组件下设置嵌套路由

    修改首页视图

    接着上一节的代码,我们修改 Main.vue 视图组件,此处使用了 ElementUI 布局容器组件,代码如下:

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

    说明:

    • 在 <el-main> 元素中配置了 <router-view /> 用于展示嵌套路由
    • 主要使用 <router-link to="/user/profile">个人信息</router-link> 展示嵌套路由内容
    博客园:https://www.cnblogs.com/xianquan
    Copyright ©2020 l-coil
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    01 输出字符串中字符的所有组合
    04 Redis主从同步
    03 Redis发布与订阅
    02 Redis防止入侵
    01 Redis基础
    MySQL索引优化 笔记
    SQL 基础语句整理
    jstl用法 简介
    type=file 上传图片限制 类型和尺寸 方法
    js 判断图片和视频是否加载成功
  • 原文地址:https://www.cnblogs.com/xianquan/p/12492566.html
  • Copyright © 2020-2023  润新知