通过路由去中心化可实现多人写作开发,不怕文件不停修改导致的冲突,modules中的文件可自动导入到index.js中
// 自动导入模块
const files = import.meta.globEager('./modules/**.js');
const modules = {}
for (const key in files) {
modules[key.replace(/(\.\/modules\/|\.js)/g, '')] = files[key].default
}
Object.keys(modules).forEach(item => {
routes.push(...modules[item]);
})
// 路由router/index.js
import { createRouter, createWebHistory } from "vue-router";
import { forLogin } from "@/utils/forLoign";
import Index from "@/layout/Index.vue";
import IndexNoMenus from "@/layout/IndexNoMenus.vue";
const routes = [
{
path: "/index",
name: "index",
redirect: "/",
component: Index,
meta: {
auth: true,
keepAlive: false,
title: "",
},
children: [
{
path: "/",
name: "home",
component: () => import("@/views/home.vue"),
meta: {
auth: true,
keepAlive: false,
title: "首页",
},
}
],
},
{
path: "/",
name: "IndexNoMenus",
redirect: "/",
component: IndexNoMenus,
meta: {
auth: true,
keepAlive: false,
title: "",
},
children: [],
},
{
path: "/login",
name: "login",
component: () => import("@/views/login.vue"),
meta: {
auth: false,
keepAlive: false,
title: "登录",
},
},
{
path: "/404",
name: "not-found",
component: () => import("@/views/404.vue"),
meta: {
auth: false,
keepAlive: false,
title: "not-found",
},
},
{
path: "/:pathMatch(.*)*",
redirect: "/404",
meta: {
auth: false,
keepAlive: false,
title: "not-found",
},
},
];
// 自动导入模块
const files = import.meta.globEager('./modules/**.js');
const modules = {}
for (const key in files) {
modules[key.replace(/(\.\/modules\/|\.js)/g, '')] = files[key].default
}
Object.keys(modules).forEach(item => {
routes.push(...modules[item]);
})
// console.log('modules', files, modules, routes);
const router = createRouter({
history: createWebHistory("/h5/"),
routes,
});
// 登录拦截跳转
router.beforeEach((to, from, next) => {
// * console.log(to)
forLogin(to, from, next);
});
export default router;