src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
const initRouteModules = async () => {
const routeModules = import.meta.glob('../views/*/routes.js', { eager: false })
const routes = await Promise.all(
Object.keys(routeModules).map(async (path) => {
const routeModule = await routeModules[path]()
return routeModule.default
})
)
return routes.flat()
}
const moduleRoutes = initRouteModules()
const routes = await moduleRoutes
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
redirect: '/home',
},
{
path: '/home',
name: 'Home',
component: () => import('../views/home/index.vue')
},
...routes
]
})
export default router
src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
const app = createApp(App)
app.use(router)
app.mount('#app')
src/views/home/routes.js
const initRouteModules = async () => {
const routeModules = import.meta.glob('./subPages/*/route.ts', { eager: false })
const routes = await Promise.all(
Object.keys(routeModules).map(async (path) => {
const routeModule = await routeModules[path]()
return routeModule.default
})
)
return routes.flat()
}
const moduleRoutes = initRouteModules()
const routes = await moduleRoutes
export default [
{
path: '/home',
name: 'Home',
component: () => import('./index.vue'),
meta: {
title: '首页'
},
children: routes
}
]
src/views/myWorkbench/routes.js
const initRouteModules = async () => {
const routeModules = import.meta.glob('./subPages/route.js', { eager: false })
const routes = await Promise.all(
Object.keys(routeModules).map(async (path) => {
const routeModule = await routeModules[path]()
return routeModule.default
})
)
return routes.flat()
}
const moduleRoutes = initRouteModules()
const routes = await moduleRoutes
export default [
{
path: '/myWorkbench',
name: 'MyWorkbench',
component: () => import('./index.vue'),
meta: {
title: '我的工作台'
},
children: routes
}
]
src/views/myWorkbench/subPages/route.js
export default [
{
path: '/score_query',
name: 'score_query',
component: () => import('./scoreInquiry/index.vue'),
meta: {
title: '成绩查询'
},
},
{
path: '/score_import',
name: 'score_import',
component: () => import('./scoreImport/index.vue'),
meta: {
title: '成绩导入'
},
}
]
项目目录结构