vue动态路由菜单思路
时间: 2024-01-07 15:23:23 浏览: 145
根据提供的引用内容,实现Vue动态路由菜单的思路如下:
1. 在前端配置好整体路由文件,将静态和动态路由分别存储在文件中。
2. 根据后台返回的路由名称数组,解析生成路由配置文件。
3. 将解析出的路由配置文件加载到router上。
4. 根据router生成菜单项。
下面是一个示例代码,演示了如何实现Vue动态路由菜单的思路:
```javascript
// 1. 在前端配置好整体路由文件,将静态和动态路由分别存储在文件中
// staticRoutes.js
const staticRoutes = [
{
path: '/',
name: 'Home',
component: Home
},
// 其他静态路由配置
];
// dynamicRoutes.js
const dynamicRoutes = [
{
path: '/role',
name: 'Role',
component: Role,
meta: { requiresAuth: true } // 需要权限验证的路由
},
// 其他动态路由配置
];
// 2. 根据后台返回的路由名称数组,解析生成路由配置文件
// parseRoutes.js
function parseRoutes(routeNames) {
const routes = [];
routeNames.forEach(routeName => {
// 根据routeName解析生成对应的路由配置
const route = {
path: `/${routeName}`,
name: routeName,
component: () => import(`@/views/${routeName}`),
meta: { requiresAuth: true } // 需要权限验证的路由
};
routes.push(route);
});
return routes;
}
// 3. 将解析出的路由配置文件加载到router上
// router.js
import Vue from 'vue';
import Router from 'vue-router';
import staticRoutes from './staticRoutes';
import dynamicRoutes from './dynamicRoutes';
Vue.use(Router);
const router = new Router({
routes: staticRoutes
});
// 在获取到后台返回的路由名称数组后,解析生成动态路由配置
const routeNames = ['Role']; // 假设后台返回的路由名称数组为['Role']
const parsedRoutes = parseRoutes(routeNames);
// 将动态路由配置添加到router中
router.addRoutes(parsedRoutes);
// 4. 根据router生成菜单项
// Menu.vue
<template>
<div>
<ul>
<li v-for="route in routes" :key="route.name">
<router-link :to="route.path">{{ route.name }}</router-link>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
routes: [] // 存储菜单项的数组
};
},
created() {
// 在获取到后台返回的路由名称数组后,解析生成动态路由配置
const routeNames = ['Role']; // 假设后台返回的路由名称数组为['Role']
const parsedRoutes = parseRoutes(routeNames);
// 将动态路由配置添加到router中
this.$router.addRoutes(parsedRoutes);
// 更新菜单项数组
this.routes = this.$router.options.routes;
}
};
</script>
```
阅读全文