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)
