简介

子路由,也叫路由嵌套,

  1. 采用在children后跟路由数组来实现,
  2. 数组里和其他配置路由基本相同,需要配置path和component,
  3. 在相应部分添加来展现子页面信息,

相当于嵌入iframe。具体看下面的示例:

父页面src/components/Home.vue

  1. <template>
  2. <div>
  3. <h1>{{msg}}</h1>
  4. <p>导航
  5. <router-link to="/home">(首页)</router-link>
  6. <br>
  7. <router-link to="/home/one">--(子页面 1)--</router-link>
  8. <router-link to="/home/two">--(子页面 2)--</router-link>
  9. <br>
  10. <router-link to="one" append>--(子页面 1)--</router-link>
  11. </p>
  12. <!-- 子页面展示 -->
  13. <router-view/>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. name: 'Home.vue',
  19. data(){
  20. return {
  21. msg: 'Home Page'
  22. }
  23. }
  24. };
  25. </script>
  26. <style lang="scss" scoped>
  27. </style>

加上 append 属性,会在当前路由后面添加一个路由。

子页面 src/components/One.vue

  1. <template>
  2. <div>
  3. <h1>{{msg}}</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'One.vue',
  9. data() {
  10. return {
  11. msg: '我是 One 组件的内容'
  12. }
  13. }
  14. };
  15. </script>
  16. <style lang="scss" scoped>
  17. </style>

子页面 src/components/Two.vue

  1. <template>
  2. <div>
  3. <h1>{{msg}}</h1>
  4. </div>
  5. </template>
  6. <script lang="ts">
  7. export default {
  8. name: 'Two',
  9. data() {
  10. return {
  11. msg: '我是 Two 页面的内容'
  12. };
  13. }
  14. };
  15. </script>
  16. <style lang="scss" scoped>
  17. </style>

路由配置

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import Home from "../components/Home";
  4. import One from "../components/One";
  5. import Two from "../components/Two";
  6. Vue.use(VueRouter)
  7. const routes = [
  8. {
  9. path: '/', // 默认配置
  10. component: Home,
  11. },
  12. {
  13. path: '/home', // 父页面路由
  14. name: 'home',
  15. component: Home,
  16. children: [ // 子路由嵌套
  17. {
  18. path: 'one', // 页面 1
  19. component: One
  20. },
  21. {
  22. path: 'two', // 页面 2
  23. component: Two
  24. }
  25. ]
  26. }
  27. ]
  28. const router = new VueRouter({
  29. mode: 'history',
  30. base: process.env.BASE_URL,
  31. routes
  32. })
  33. export default router

效果图

image.png