今天在使用Vue-router路由的时候子路由组件内容始终无法渲染,这个是因为我完全把它当做Django里面的子路由用了,在抽象层面我认为Vue和Django的子路由的作用是一样的。但又在具体使用的时候又是两个不一样的概念,比如:Django根路由会include指向到应用中的子路由,再由根路由指向具体的视图函数、类;把Vue router插件实例化参数routers列表中的对象比做根路由,那这个对象的children列表属性里面的对象比做子路由的话,那这个路由的用法是在根路由对象component这个组件中像APP.vue中使用<router-view />
标签去用作渲染子路由对应对象的component。
先给出我的/router/index.js内容:
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
export const route_const = [
{
path: '/',
name: '/',
component: function(resolve){
require(['@/views/Home'], resolve);
},
meta: {
requireLogin: true
}
},
{
path: '/home/',
name: 'home',
component: function(resolve){
require(['@/views/Home'], resolve);
},
meta: {
requireLogin: true
}
},
{
path: '/about/',
name: 'home',
component: function(resolve){
require(['@/views/About'], resolve);
},
meta: {
requireLogin: true
}
},
{
path: '/login/',
name: 'login',
component: function(resolve){
require(['@/views/account/Login'], resolve);
}
},
{
path: '/error',
name: 'error',
component: function(resolve){
require(['@/views/error/index'], resolve);
},
children:[
{
path: '404/',
name: '404',
component: function(resolve){
require(['@/views/error/404'], resolve);
},
meta: {
requireLogin: true
}
}
]
},
{
path: '*',
redirect: 'error/404/',
meta: {
requireLogin: true
}
}
]
const createRouter = () => new Router({
// mode: 'history', // require service support
scrollBehavior: () => ({ y: 0 }),
mode: 'history',
routes: route_const
})
const router = createRouter()
export function resetRouter() {
const newRouter = createRouter()
router.matcher = newRouter.matcher // reset router
}
export default new Router({
mode: 'history',
routes: route_const
});
下面给出根路由error的component组件内容:
<template>
<div>
<h2>报错页面专用</h2>
<router-view />
</div>
</template>
<script>
export default {
name: 'error'
}
</script>
下面给出子路由404的component组件内容:
<template>
<div>
<h2>404</h2>
</div>
</template>
<script>
export default {
name: '404'
}
</script>
想上面这种使用方法当我在浏览器中输入{{domain}}/error/404/
,这个使用就可以渲染了,那我之前是怎么用的呢?我直接根路由不给component组件内容,直接在children子路由中去写子路由的组件内容,我以为这个跟路由只起到便捷的作用,也有可能我还没有发现我所想的这种使用方式。慢慢用吧,相信时间长了以后见到优秀项目以后吸取其中优秀的写法。