// 路由表由模块注册表动态生成 -- 新增模块自动产生路由,无需手改。 import { createRouter, createWebHistory } from 'vue-router' import modules from '../modules/index.js' const moduleRoutes = modules .map((m) => { try { // 模块可声明 param(如 'boardId')以接受 // 形式的子路径, // 形如 /whiteboard/share。可选参数 (? 后缀) 使 /whiteboard 仍可访问。 const paramPart = m.param ? `/:${m.param}?` : '' return { path: `/${m.id}${paramPart}`, name: m.id, component: m.component, meta: { moduleId: m.id } } } catch (e) { console.warn(`[router] 模块 ${m?.id} 路由生成失败,已跳过:`, e) return null } }) .filter(Boolean) const routes = [ { path: '/', redirect: moduleRoutes.length ? moduleRoutes[0].path : '/404' }, // 每个模块一条路由,组件懒加载 ...moduleRoutes, { path: '/:pathMatch(.*)*', name: 'not-found', redirect: '/' } ] const router = createRouter({ history: createWebHistory(), routes, scrollBehavior() { return { top: 0 } } }) export default router