vue 3 路由模块化核心是按业务域拆分路由文件并统一入口自动聚合,通过 import.meta.glob 动态加载 src/router/modules/ 下各模块(如 user.js、admin.js),结构化 meta 字段(title、requiresauth、keepalive、permission)并解耦守卫逻辑至 config 层。

Vue 3 路由系统模块化的核心,是让路由配置随业务生长而可维护、可测试、可复用,而不是堆在单个 routes 数组里越写越难读。
按业务域拆分路由文件
每个功能模块(如用户、订单、后台管理)对应一个独立的路由文件,路径统一放在 src/router/modules/ 下。例如:
-
user.js管理所有以/user开头的路由,含嵌套路由(如/user/profile、/user/settings) -
admin.js封装权限隔离强的后台路由,可默认设置meta: { requiresAuth: true, role: 'admin' } - 首页、公共页等轻量模块也单独成文件,避免和核心业务耦合
统一入口自动聚合
src/router/index.js 不手动拼接数组,而是用 import.meta.glob 动态导入所有模块,实现“增删模块即生效”:
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
- 用
const modules = import.meta.glob('./modules/*.js', { eager: true })批量加载 - 遍历
Object.values(modules)提取默认导出的路由数组 - 合并后传入
createRouter({ routes }),同时保留 404 和重定向规则
路由元信息结构化设计
meta 字段不是随意加字段的垃圾桶,而是有明确用途的契约:
-
title:用于页面标题同步,配合router.beforeEach统一设置document.title -
requiresAuth:布尔值,作为权限守卫的基础判断依据 -
keepAlive:控制是否包裹在<keep-alive></keep-alive>中,避免重复初始化 -
permission:字符串或数组,如['user:read', 'order:edit'],供细粒度权限校验使用
配套拦截逻辑解耦到 config 层
把守卫逻辑从路由配置中完全剥离,放到 src/router/config.js 中集中管理:
-
setupRouterGuard(router)函数接收 router 实例,注册beforeEach、afterEach等钩子 - 登录检查、权限跳转、页面加载状态、埋点上报等横切关注点全部在此封装
- 不同环境可按需启用部分守卫(如测试环境跳过 auth),提升调试效率
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










