Vue相关知识


Vue相关知识

vue关于路由模块化技巧

function processRouter(router) {
    if (router.meta.permission === 'checkLogined') {
        router.meta.permission = true;
    } else {
        router.meta.permission = checkLogined;
    }
    router.children && router.children.forEach(child => {
        if (child.meta.permission === 'checkLogined') {
            child.meta.permission = true;
        } else if (typeof (router.meta.permission) == 'function') {
            child.meta.permission = checkLogined;
        } else {
            child.meta.permission = false;
        }
    })
}

const routerDefine = [{
    path: "/404",
    name: "err_404",
    component: () =>
        import("../components/page/404.vue")
},
{
    path: "/403",
    name: "err_403",
    component: () =>
        import("../components/page/403.vue")
},
{
    path: "/",
    name: "root",
    redirect: "/index"
},
{
    path: "/",
    name: "home",
    component: () => import("@components/common/Home.vue"),
    meta: { title: "首页", permission: checkLogined }
},
]
const routers = require.context('../components/page/modules', true, /router.js$/)

routers.keys().forEach(file => {
    let router = routers(file).default;
    if (Array.isArray(router)) {
        router.forEach(r => {
            processRouter(r)
        })
        routerDefine.push(...router);
    } else {
        processRouter(router)
        routerDefine.push(router);
    }
})
routerDefine.push({
    path: "*",
    redirect: "/404"
})
export default routerDefine;

vue关于配置文件模块化技巧

const apis = require.context('../../components/page/modules', true, /\/config.js$/)

function concat(o) {
    Object.keys(o).forEach(key => {
        if (typeof (o[key]) === "string") {
            o[key] = `${BasePath}${o[key]}`
        } else {
            concat(o[key])
        }
    })
}

const result = apis.keys().reduce((acc, file) => {
    let urls = apis(file).default;
    concat(urls);
    acc[file.split('/')[1]] = urls;
    return acc
}, {})

export default Object.assign({
    common:{
        submitPwd:BasePath + "/common/submitPwd",
        checkPassword:BasePath + "/authm-api/check/pass",
    },
    import: {
        uploadUrl: BasePath + "/fileUpload/save",
        uploadDel: BasePath + "/fileUpload/del",
        download: BasePath + "/fileUpload/download"
    },
    template:{
        download:BasePath + "/template/download",//模板下载路径
    }

}, result)
 

image-20221002140555670


文章作者: Liu Yuan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Liu Yuan !
—— 评论区 ——
  目录