vue-element-admin 后台动态加载菜单

3 篇文章 0 订阅

前言

做后台项目,权限验证与安全性是非常重要的,vue-element-admin官方主要介绍了前端控制用户菜单加载显示,以及权限控制。这就带来一些不便,服务端无法(这里可能说的绝对了,起码实现起来不太友好)控制菜单的动态展示,用户权限跟菜单相互关系的绑定。

这里我们通过分析go-admin 代码来让大家一步步了解如何实现服务端控制前端菜单的展示的。

项目地址:

github:

https://github.com/guyan0319/go-admin

码云(国内):

https://gitee.com/jason0319/go-admin

注意:

这里下载vue-element-admin的多语言版i18n,不是master分支。

1、修改文件\src\router\index.js里面的asyncRoutes变量为

export const asyncRoutes = [
  { path: '*', redirect: '/404', hidden: true }
]

2、修改文件 src\store\modules\permission.js

具体修改内容代码在go-admin项目里。

3、修改文件src/api/user.js中调取服务端接口方法

具体修改内容代码在go-admin项目里。

4、这里贴出服务端返回菜单数据结构

即:接口http://localhost:8090/dashboard

{
	"code": 20000,
	"data": [{
		"children": [{
			"children": [{
				"alwaysShow": true,
				"component": "/system/user/create/index",
				"hidden": false,
				"id": 27,
				"meta": {
					"icon": "#",
					"status": true,
					"title": "添加用户"
				},
				"name": "添加用户",
				"path": "/system/user/create",
				"pid": 2,
				"url": "/user/create"
			}, {
				"component": "/system/user/list/index",
				"hidden": false,
				"id": 28,
				"meta": {
					"icon": "#",
					"status": true,
					"title": "用户列表"
				},
				"name": "用户列表",
				"path": "/system/user/list",
				"pid": 2,
				"url": "/user/index"
			}, {
				"alwaysShow": true,
				"component": "/system/user/edit/index",
				"hidden": true,
				"id": 29,
				"meta": {
					"icon": "#",
					"status": true,
					"title": "用户编辑"
				},
				"name": "用户编辑",
				"path": "/system/user/edit/:id(\\d+)",
				"pid": 2,
				"url": "/user/edit"
			}],
			"component": "/system/user/index",
			"hidden": false,
			"id": 2,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "用户管理"
			},
			"name": "用户管理",
			"path": "/system/user",
			"pid": 1,
			"url": "/user"
		}, {
			"component": "/system/menu/index",
			"hidden": false,
			"id": 3,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "菜单管理"
			},
			"name": "菜单管理",
			"path": "/system/menu",
			"pid": 1,
			"url": "/menu"
		}, {
			"alwaysShow": true,
			"component": "/system/role/index",
			"hidden": false,
			"id": 26,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "角色管理"
			},
			"name": "角色管理",
			"path": "/system/role",
			"pid": 1,
			"url": "/roles"
		}],
		"component": "#",
		"hidden": false,
		"id": 1,
		"meta": {
			"icon": "fafa-adjust",
			"status": true,
			"title": "系统管理"
		},
		"name": "系统管理",
		"path": "#",
		"pid": 0,
		"url": "#"
	}, {
		"alwaysShow": true,
		"children": [{
			"alwaysShow": true,
			"component": "/article/create/index",
			"hidden": false,
			"id": 31,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "创建文章"
			},
			"name": "创建文章",
			"path": "/article/create",
			"pid": 30,
			"url": "/article/create"
		}, {
			"alwaysShow": true,
			"component": "/article/edit/index",
			"hidden": true,
			"id": 32,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "文章编辑"
			},
			"name": "文章编辑",
			"path": "/article/edit/:id(\\d+)",
			"pid": 30,
			"url": "/article/edit"
		}, {
			"alwaysShow": true,
			"component": "/article/list/index",
			"hidden": false,
			"id": 33,
			"meta": {
				"icon": "#",
				"status": true,
				"title": "文章列表"
			},
			"name": "文章列表",
			"path": "/article/list",
			"pid": 30,
			"url": "/article/list"
		}],
		"component": "#",
		"hidden": false,
		"id": 30,
		"meta": {
			"icon": "#",
			"status": true,
			"title": "内容管理"
		},
		"name": "内容管理",
		"path": "#",
		"pid": 0,
		"url": "/article"
	}]
}

这里需要说明一下,返回的json数据结构中几个关键点:

url:这个是对应调取服务端接口,用于服务端控制路由权限,前端要按相应的接口调用(在api文件夹里面方法修改)。

component:等于#为一级参单,这里有个容易忽略的细节,如果修改component文件不好会造成重复嵌套参单。这里就用到vue的

 <router-view />

hidden:是否隐藏菜单显示,true:隐藏,false:显示。

5、实现的效果图

小结:

  • 所有代码可在项目go-admin中找到,故有些代码没有在此展示,以免浪费大家篇幅。

  • 前后端分离,服务端用什么开发语言无所谓,可用java、go、php等,本项目用的go,感兴趣可以clone。

  • 需要注意跨域问题。

至此,服务端控制vue-element-admin 动态加载参单实现方式就讲完了,如有任何问题或建议欢迎提issues

参考:

https://blog.csdn.net/acoolper/article/details/97136553

links

  • 2
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: 将 Vue-element-admin 与 Django 后台对接需要进行以下步骤: 1. 编写 Django 后台 API 接口,提供数据交互服务; 2. 在 Vue-element-admin 中安装 Axios,用于向后台发送请求; 3. 在 Vue-element-admin 中编写与后台 API 对接的代码; 4. 在 Vue-element-admin 中使用前端路由(vue-router)跳转到对应页面。 具体操作步骤如下: 1. 编写 Django 后台 API 接口 在 Django 中编写后台 API 接口,提供数据交互服务。可以使用 Django REST framework 来快速构建 RESTful API。 2. 安装 Axios 在 Vue-element-admin 中安装 Axios,可以使用以下命令: ``` npm install axios ``` 3. 编写与后台 API 对接的代码 在 Vue-element-admin 中编写与后台 API 对接的代码,可以使用 Axios 发送请求,例如: ``` import axios from 'axios' export default { // 获取用户列表 getUsers() { return axios.get('/api/user/') }, // 创建用户 createUser(user) { return axios.post('/api/user/', user) }, // 删除用户 deleteUser(id) { return axios.delete(`/api/user/${id}/`) } } ``` 4. 使用前端路由跳转到对应页面 在 Vue-element-admin 中使用前端路由(vue-router)跳转到对应页面,例如: ``` import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Dashboard', component: () => import('@/views/dashboard/index') }, { path: '/user', name: 'User', component: () => import('@/views/user/index') }, { path: '/user/create', name: 'CreateUser', component: () => import('@/views/user/create') }, { path: '/user/:id/edit', name: 'EditUser', component: () => import('@/views/user/edit') } ] }) ``` 以上就是将 Vue-element-admin 与 Django 后台对接的基本步骤,具体实现还需要根据具体需求进行调整。 ### 回答2: Vue-element-admin是一个基于Vue.js和Element UI开发的后台管理系统框架,而Django是一个基于Python的Web开发框架。对接Vue-element-admin和Django后台,需要以下几个步骤: 1. 了解Vue-element-admin的架构和功能:首先需要熟悉Vue-element-admin的组件和页面结构,了解其提供的基本功能和接口。 2. 安装Django并配置数据库:在Django中创建一个新的项目,并配置好数据库信息,确保Django与数据库的连接正常。 3. 创建Django的URL和路由:根据Vue-element-admin的路由规则,在Django中创建对应的URL和路由,用于响应前端请求。 4. 编写Django的视图函数:编写Django的视图函数,处理前端请求并返回相应的数据。可以根据需要,操作数据库、调用其他后台服务等。 5. 前后端数据交互:根据Vue-element-admin的接口规范,与Django进行数据交互。可以使用axios库发送请求,同使用Django的序列化器将数据转化为JSON格式返回给前端。 6. 数据权限控制:在Vue-element-admin中,可以根据用户权限动态显示菜单和路由。可以在Django中实现相应的权限控制逻辑,根据用户角色或权限限制相应的数据访问。 7. 进行前后端联调和测试:在前后端对接完成后,通过联调和测试确保系统的正常运行。可以使用开发者工具进行调试,在两端之间传递数据并检查返回结果。 总结起来,对接Vue-element-admin和Django后台,需要根据Vue-element-admin的组件和路由规则,在Django中进行相应的配置和编码,实现前后端的数据交互和权限控制。通过以上步骤,可以构建一个完整的Vue-element-admin后台管理系统,使用Django作为后台支持。 ### 回答3: vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统模板。而 Django 是一个使用 Python 编写的高级 Web 开发框架。 对接 vue-element-admin 和 Django 后台的过程中,需要进行以下几个步骤: 1. 安装和配置 vue-element-admin 和 Django 工程。 - 首先,在本地搭建好 Django 工程,确保能够正常运行。 - 然后,在 vue-element-admin 的基础上建立 Vue.js 工程,配置好相关依赖。 - 将 Django 与 vue-element-admin 的工程整合在一起,确保两者可以同运行。 2. 定义接口和数据交互方式。 - 在 Django 的工程中,根据需求定义后台接口,用于前后台数据的交互。 - 在 vue-element-admin 的工程中,使用 axios 等ajax库,通过 HTTP 请求与 Django 后台进行数据交互。 3. 配置路由和权限控制。 - 在 Django 的工程中,配置好路由,将前端请求映射到对应的后端视图函数。 - 在 vue-element-admin 的工程中,配置好前端路由,确保前端页面可以正确访问,并实现权限控制策略。 4. 前后台数据的处理和展示。 - 在 vue-element-admin 的工程中,通过获取 Django 后台的数据,对数据进行处理和展示。 - 可以使用 vue.js 的组件化开发思想,将数据展示和页面交互的逻辑进行拆分和重复利用。 通过以上步骤的对接,vue-element-admin 和 Django 后台可以实现前后台的数据交互、权限控制和页面展示。以此来构建一个完整的后台管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值