作用
配嵌套子路由,就是可以通过同一个页面,让不同的位置发生变化,其他的位置不会发生变化,而做到一个局部刷新
例子

红线框住的部分,头部和导航栏是不会发生变化的,变化的只有中间的内容
子路由的操作步骤
将这个页面的头部和导航栏部分的样式和风格,移到主路由上(<template>和<scripe>),将内容部分移到子路由
主路由页面
<script>
import {defineComponent} from 'vue'
import HeadMenu from "@/views/inc/HeadMenu.vue";
import SideMenu from "@/views/inc/SideMenu.vue";
export default defineComponent({
  name: "Home",
  components: {SideMenu, HeadMenu}
})
</script>
<template>
  <el-container>
    <!-- 左侧菜单栏 -->
    <el-aside class="el-aside" style="width: 200px">
      <SideMenu></SideMenu>
    </el-aside>
    <!-- 右侧主体内容 -->
    <el-container>
      <!-- 头部导航栏 -->
      <el-header class="header">
        <HeadMenu></HeadMenu>
      </el-header>
      <!-- 主要内容区域 -->
      <el-main class="main">
        <router-view></router-view>
      </el-main>
    </el-container>
  </el-container>
</template>
<script>
import SideMenu from "./inc/SideMenu.vue";
import HeadMenu from "./inc/HeadMenu.vue";
export default {
  name: "Home",
  components: {
    SideMenu,
    HeadMenu
  }
};
</script>
<style >
.el-aside {
  background-color: #D3DCE6;
  color: #333;
  text-align: left; /* 将文本向左对齐 */
  line-height: 60px; /* 菜单项垂直对齐 */
  height: 100%; /* 设置高度为父容器 el-container 的高度 */
  display: flex; /* 使用 Flex 布局 */
  flex-direction: column; /* 垂直布局 */
}
.el-menu-vertical-demo {
  flex: 1; /* 菜单项占据 el-aside 的剩余空间 */
  overflow-y: auto; /* 如果内容过多,显示滚动条 */
  width: 200px;
}
.el-container {
  padding: 0;
  margin: 0;
  height: 100vh; /* 设置整体容器高度为视窗高度 */
}
.el-header {
  background-color: #B3C0D1;
  color: #333;
  text-align: center;
  line-height: 60px;
}
.el-main {
  color: #333;
  text-align: center;
  line-height: 160px;
}
</style> 
我这里是进行了一个页面的抽取
子路由页面
<template>
<div>main</div>
</template>
<script>
import SideMenu from "./inc/SideMenu.vue";
import HeadMenu from "./inc/HeadMenu.vue";
export default {
  name: "index",
  components: {}
};
</script>
<style scoped>
</style>
 
配置路由
  {
    path: '/',
    name: 'Home',
    component: () => import( '../views/Home.vue'),
    children: [
      {
        path: '/index',
        name: 'index',
        component: () => import( '../views/index.vue')
      }
    ],
  }, 
相当于它还是同一个页面,只是里面进行了一个嵌套
这个时候页面还没有反应,因为没有引用
引用
      <!-- 主要内容区域 -->
      <el-main class="main">
        <router-view></router-view>
      </el-main> 
使用<router-view></router-view>来进行引用
成功
结果

这样就可以做到在不创建新页面的情况下,使用同一个页面完成局部刷新



















