先看下route.jsjavascript
//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>,修改下:vue
{ path:'course', component:Course children:[{ path:'list', component:CourseList },{ path:'content', component:CourseContent } ] },
Course.vue以下:java
<template> <div> <router-view></router-view> </div> </template>
这样就能够实现嵌套了。想一想,本例子中,其实App组件也是这样的,他提供了个<router-view></router-view>,对不对?spa
http://localhost:8080/#/course/list
http://localhost:8080/#/course/content
均可以访问了。component