首先App.vue有一个最顶层的router-view

//App.vue
<template>
  <keep-alive>
    <router-view/>
  </keep-alive>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
</style>

router/index.js文件配置的意思是,当浏览器路径为/,App.vue里的router-view显示HelloWorld组件

//router/index.js
const router = new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component:HelloWorld
    }
  ]
})

子路由,child.vue有一个子路由router-view,再创建两个组件a.vue和b.vue

//child.vue
<template>
  <div class="child">
    <router-link to="/a"></router-link>
    <router-link to="/b"></router-link>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'child'
}
</script>

<style>
</style>

router/index.js文件配置的意思是,
当浏览器路径为/a,child.vue里的子路由router-view显示a组件
当浏览器路径为/b,child.vue里的子路由router-view显示b组件
默认显示a组件

//router/index.js
const router = new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component:HelloWorld
    },
    {
      path: '/a',//路径配置和第一个children一样,表示子路由默认显示a.vue
      name: 'a',
      component: child,
      //path: '/child',
      //redirect:'/a',//或者也可以重定向到/a
      children:[
        {
          path:'/a',
          name: 'a',
          component: a
        },
        {
          path:'/b',
          name: 'b',
          component: b
        }
      ]
    },
  ]
})

同级多个子路由,child2.vue有3个子路由router-view,再创建三个组件child_a.vue,child_b.vue,child_c.vue

//child2.vue
<template>
  <div class="child2">
    <router-link to="/child_a"></router-link>
    <router-link to="/child_b"></router-link>
    <router-view/>
    <router-view/ name="b">
    <router-view/ name="c">
  </div>
</template>

<script>
export default {
  name: 'child2'
}
</script>

<style>
</style>

router/index.js文件配置的意思是,
当路径为/child_a时,默认router-view显示child_a,name为b的router-view显示child_b,name为c的router-view显示child_c
当路径为/child_b时,默认router-view显示child_c,name为b的router-view显示child_b,name为c的router-view显示child_a
默认路径为/child_a

//router/index.js
const router = new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component:HelloWorld
    },
    {
      path: '/a',
      name: 'a',
      ...//同上,省略
    },
    {
      path: '/child_a',    //路径配置和第一个children一样,表示默认路径为/child_a
      name: 'child_a',
      component: child2,
      //path: '/child2',
  	  //redirect:'/child_a',   //或者也可以重定向到/child_a
      children:[    //此处要配置在children里也是因为3个路由都为child2里的子路由
        {
          path: '/child_a',    //当路径为/child_a时
          components: {    //这里注意是components,加s
            default: child_a,    //默认router-view显示child_a
            b: child_b,	   //name为b的router-view显示child_b
            c: child_c	   //name为c的router-view显示child_c
          }
        },
        {
          path: '/child_b',//当路径为/child_b时
          components: {
            default: child_c,	//默认router-view显示child_c
            b: child_b,    //name为b的router-view显示child_b
            c: child_a     //name为c的router-view显示child_a
          }
        }
      ]
    },
  ]
})
Logo

前往低代码交流专区

更多推荐