在實際項目中我們會碰到多層嵌套的組件組合而成,但是我們如何實現嵌套路由呢?因此我們需要在 VueRouter 的參數中使用 children 配置,這樣就可以很好的實現路由嵌套。
index.html,只有一個路由出口
1 <div id="app"> 2 <!-- router-view 路由出口, 路由匹配到的組件將渲染在這里 --> 3 <router-view></router-view> 4 </div>
main.js,路由的重定向,就會在頁面一加載的時候,就會將home組件顯示出來,因為重定向指向了home組件,redirect的指向與path的必須一致。children里面是子路由,當然子路由里面還可以繼續嵌套子路由。
1 import Vue from 'vue' 2 import VueRouter from 'vue-router' 3 Vue.use(VueRouter) 4 5 //引入兩個組件 6 import home from "./home.vue" 7 import game from "./game.vue" 8 //定義路由 9 const routes = [ 10 { path: "/", redirect: "/home" },//重定向,指向了home組件 11 { 12 path: "/home", component: home, 13 children: [ 14 { path: "/home/game", component: game } 15 ] 16 } 17 ] 18 //創建路由實例 19 const router = new VueRouter({routes}) 20 21 new Vue({ 22 el: '#app', 23 data: { 24 }, 25 methods: { 26 }, 27 router 28 })
home.vue,點擊顯示就會將子路由顯示在出來,子路由的出口必須在父路由里面,否則子路由無法顯示。
1 <template> 2 <div> 3 <h3>首頁</h3> 4 <router-link to="/home/game"> 5 <button>顯示<tton> 6 </router-link> 7 <router-view></router-view> 8 </div> 9 </template>
game.vue
1 <template> 2 <h3>游戲</h3> 3 </template>
運行后的結果:

點擊顯示后:

