Vue路由分模块 与 子路由嵌套,

路由模块化

 

创建文件路径如下:

ba2cebdd8ba8449996f4b39c66ec9c3c.png

 

路由模块化思路

/**
*
* 还是导入导出那一套,首先新建语义化的文件,在js文件中导出export default { // XXX }
* 导出多个路由模块要加[],例如export default [{},{}],
* 在router.js引入,写在路由里,需要...引入的名字,这导出的一个不需要...
*
*/

1、新建文件后 内容如下方

新建的sort.js文件

/**
 * 多个分模块路由。
 */

export default [{
    // 如果多个路由分模块需要一个数组导出
    path: '/mySort',
    name: '',
    component: () =>
        import ('@/views/排序/mySort.vue'),

}, {
    path: '/mySort1',
    name: '',
    component: () =>
        import ('@/views/排序/mySort1.vue')
}]
新建的NoFond.js文件

/**
 * 404路由模块
 */
export default {
    // 路由分模块
    // 如果url找不到就会报404,必须放在路由页面最下面
    path: "/:pathMatch(.*)",
    component: () =>
        import ("@/views/404页面/NotFound.vue"),
}

2、当然views也要创建相同文件

8a3222c256eb43a5a04743387c96e932.png

3、在router.js 引入

20adef856d8a45e7aeaf59b5a846a6cd.png

 1123dfb102e54a79b490107b2155e12f.png

 

30573b9ab3bb4d67b8f4ea4886fe2bc5.png

 以上配置路由分模块已完成

17502019a6394cda9e2b6fc7ab397ee1.pnga1bc01b2ee7b43daa563cb91ad01718e.pngd2379bbb603840b8bb34a2257ecfd82b.png

 

 

 93fa699520274d499601466afab793df.png

 配合代码图文并茂更易理解

位置:router/index.js

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);
// 重写 router push 方法, 解决编程式路由往同一地址跳转时会报错的情况
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location, onResolve, onReject) {
    if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
    return originalPush.call(this, location).catch(err => err)
}
const routes = [
    // 重定向
    {
        path: "/",
        redirect: "/Login",
    },
    /*  
     思路:没底部导航直接在最外层,
     最外层是经过app.vue, 新建一个文件(Index.vue), 这个文件写在最外层
     它里面放坑 <router-view></router-view>,
     有底部导航经过这个Index
     */

    //经过app.vue的坑 没底部导航,因为app.vue没有写底部导航
    {
        path: "/my",
        name: "my",
        component: () =>
            import ("../views/My.vue"),
    },
    {
        // 演出下面有二级路由
        path: "/show",
        name: "show",
        component: () =>
            import ("../views/show/Index.vue"), //父亲路由 坑
        children: [{
                path: "/showhome", //儿子路由
                name: "showhome",
                component: () =>
                    import ("../views/show/Home.vue"),
            },
            {
                path: "/showorder", //儿子路由
                name: "showorder",
                component: () =>
                    import ("../views/show/Order.vue"),
            },
        ],
    },

    // 以下的进index不进app.vue  有底部导航
    {
        path: "/index",
        name: "index",
        component: () =>
            import ("../views/Index.vue"),
        children: [

            {
                path: '/Login',
                name: '',
                component: () =>
                    import ('../views/Login.vue')
            },
            {
                path: "/radio",
                name: "radio",
                component: () =>
                    import ("../views/Radio.vue"),
            },
            {
                path: "/sradio",
                name: "sradio",
                component: () =>
                    import ("../views/Sradio.vue"),
            },
            {
                path: "/home",
                name: "home",
                component: () =>
                    import ("../views/Home.vue"),
            },
        ],
    },
    // 以上的进index不进app.vue  有底部导航

];

const router = new VueRouter({
    routes,
});
// 后面跟的是回调函数 把一个函数作为参数传递给另一个函数,特点是不会立即执行,调用传过来的参数才会执行
router.beforeEach((to, from, next) => {

    if (localStorage.getItem("user")) {
        next()
    } else {
        if (to.path == "/Login") {
            next()
        } else {
            next("/Login")
        }
    }
})

export default router;

 

b63b497f64f24666806d9883e3cacfc5.png

e9338aee50084b5a8b0398ec70f5c69e.png

路由tabBer完! 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彩色之外

你的打赏是我创作的氮气加速动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值