先看下route.js
//route.js
const App = () => import('../App.vue');
const Login = () => import('../component/Login.vue');
const Class = () => import('../component/Class.vue');
const CourseList = () => import('../component/CourseList.vue');
const CourseContent = () => import('../component/CourseContent.vue');
const routers = [{
path:'/',
component:App,
children:[{
path:'login',
component:Login
},{
path:'class',
component:Class
},
{
path:'course',
children:[{
path:'list',
component:CourseList
},{
path:'content',
component:CourseContent
}
]
},
]
}]
export default routers
當你訪問的時候,發現
http://localhost:8080/#/login
http://localhost:8080/#/class
都正常,但是:
http://localhost:8080/#/course/list
http://localhost:8080/#/course/content
都是一片空白,檢查元素,發現沒有加載過來。檢查,子路由前面並沒有加/,所以這沒有問題,排除。
其實這是list的父級course沒有component,有了componnet,並且需要在這個component理要有<router-view></router-view>,修改下:
{
path:'course',
component:Course
children:[{
path:'list',
component:CourseList
},{
path:'content',
component:CourseContent
}
]
},
Course.vue如下:
<template> <div> <router-view></router-view> </div> </template>
這樣就可以實現嵌套了。想想,本例子中,其實App組件也是這樣的,他提供了個<router-view></router-view>,對不對?
http://localhost:8080/#/course/list
http://localhost:8080/#/course/content
都可以訪問了。
