在 Vue3 的项目开发,尤其是后台管理系统这类复杂应用场景中,侧边菜单扮演着举足轻重的角色,它是用户快速导航至各个功能模块的得力助手。而根据路由动态生成侧边菜单,则为系统的灵活性和可扩展性增添了强大动力。接下来,我们将深入探讨如何在 Vue3 中实现这一关键功能。
gitCode代码地址:https://gitcode.com/Jiaberrr/vue3-pc-template/overview,
gitee代码地址:https://gitee.com/zunyi-gabe/vue3-pc-template (如果需要简单版(除了框架啥也没有)请切到master分支)
演示地址1:https://vue3-pc-template.vercel.app/login演示地址2:https://env-00jxt0stsnl3-static.normal.cloudstatic.cn/index.html
首先,确保你的 Vue3 项目已经集成了 Vue Router 和合适的 UI 组件库(如 Element Plus,这里以其为例进行讲解,原理相通)。Vue Router 负责管理路由信息,而 UI 组件库则提供了美观且功能丰富的菜单组件供我们使用。
import { createRouter, createWebHistory } from 'vue-router';
import Home from '@/views/Home.vue';
import About from '@/views/About.vue';
import UserManage from '@/views/UserManage.vue';
const routes = [
{
path: '/',
name: 'Home',
component: Home,
meta: {
breadcrumbName: '首页',
icon: 'HomeFilled' // 假设 Element Plus 的图标名称,实际依库而定
}
},
{
path: '/about',
name: 'About',
component: About,
meta: {
breadcrumbName: '关于我们',
icon: 'InfoFilled'
}
},
{
path: '/user-manage',
name: 'UserManage',
component: UserManage,
meta: {
breadcrumbName: '用户管理',
icon: 'UserFilled'
},
children: [
{
path: 'list',
name: 'UserList',
component: () => import('@/views/UserList.vue'),
meta: {
breadcrumbName: '用户列表'
}
},
{
path: 'add',
name: 'UserAdd',
component: () => import('@/views/UserAdd.vue'),
meta: {
breadcrumbName: '添加用户'
}
}
]
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
这里,每个路由对象都有 meta 字段,用于存储菜单显示相关的额外信息,如面包屑名称和图标名称,同时部分路由设置了子路由,构建出层级结构,为侧边菜单的多级展示奠定基础。
后台管理平台
首页
{{ item.meta.breadcrumbName }}
{{ ite.meta.breadcrumbName }}
1、头部 logo 展示:
2、 菜单主体构建:
一级菜单:
二级菜单:通过 v-for 循环遍历 routerList 数组来生成。每个二级菜单组由
1、 模块引入:
2、 组件属性接收:
3、 数据获取与方法定义:
1、 权限控制:结合后端返回的用户权限信息,在 filteredRoutes 计算属性中进一步筛选,确保用户只能看到有权访问的菜单。例如,可以在路由的 meta 字段添加权限标识,然后根据用户的权限列表进行比对过滤。
2、 动态加载菜单:对于大型项目,一次性加载所有菜单可能影响初始加载性能。可以利用 Vue 的异步组件特性,在用户点击展开二级菜单或者进入特定模块时,再动态加载子菜单对应的组件,优化资源利用。
3、 样式定制:根据项目的设计风格,深入定制侧边菜单的样式,如颜色、字体、动画效果等,提升用户视觉体验。
通过以上步骤,我们在 Vue3 中成功构建了一个根据路由动态生成的侧边菜单系统,并且为后续的功能拓展和优化铺就了坚实道路,助力打造高效、易用的 Vue3 应用。