项目演示地址:https://git.io/fp9UM
项目仓库地址:https://github.com/Neveryu/vue-cms
引文
搞一个后台管理系统,应该是每个公司都会有的需求。基于后端(JAVA、PHP、GO)的 MVC 模式的后台管理系统中,一般前端使用的技术栈都是 jQuery + Bootstrap。
因为现在都是前后端分离,所以搞一个基于 Vue + ElementUI 的纯前端的后台管理系统,通过接口与后端交互。
思考
纯前端搞一个后台管理系统,如果不是 SPA 的话,可能还确实挺麻烦的:
1、全局状态、登录状态、用户信息之类的数据如何维护
2、菜单、路由权限如何设计管理
3、模块、组件如何划分以及复用
4、代码如何管理维护
所以,SPA 还是挺好的。
快速上手
# 克隆项目git clone https://github.com/Neveryu/vue-cms.git# 进入项目目录cd vue-cms# install dependenciesnpm install# serve with hot reload at localhost:8080npm start
完成上面这套操作,就可以在浏览器中输入:localhost:8080
看到项目了。
项目结构介绍
项目的外层目录文件,就没啥好说的了,本身也是用 vue-cli
来构建的,大家应该都清楚。我们主要来看一下 src
里面的内容。
引入 ElementUI
npm i element-ui -S
Element UI
作为我们主要的 UI 组件库,还是推荐使用 完整引入 的方式。
然后,在 main.js
中:
import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI, {size: 'medium'})
登录功能设计
- 自定义输入验证校验规则
ElementUI
本身有提供表单的验证功能,但是验证规则有限,如果你想更丰富,更适合自己场景的验证规则,可以使用 自定义校验规则
// username 验证规则const validateUsername = (rule, value, callback) => {if (!isValidUsername(value)) {// 如果callback是一个error对象,则验证不通过callback(new Error('请输入正确的用户名'))} else {callback()}}// 在 rules 中对要验证的字段配置 validatorrules: { username: [{ required: true, message: '请输入账号', trigger: 'blur' },{ required: true, trigger: 'blur', validator: validateUsername },{ required: true, trigger: 'change', validator: validateUsername }],pwd: [{ required: true, message: '请输入密码', trigger: 'blur' },{ required: true, trigger: 'blur', validator: validatePwd },{ required: true, trigger: 'change', validator: validatePwd }]}
- 登录功能以及权限
提交用户输入的登录信息,调用接口要做验证。验证成功之后:
1、localstorage
会存储登录成功后下发的 token
(后端会验证token
的时效性)
2、登录成功后会跳到系统的主页
3、每一次路由跳转之前都会验证是否是登录态
- 权限以及菜单栏
1,permission.js
的功能是全局的权限校验,每一次路由跳转都会触发这里面的全局路由前置钩子函数,这个是非常有必要的。
2、对于不同权限的用户对应不同的菜单来说,在登录之后,获取到用户在这个系统中所属的角色,然后,将 【基础菜单】 和 【角色所属菜单】做一个叠加,生成登录用户的菜单栏。
项目演示地址:https://git.io/fp9UM
项目仓库地址:https://github.com/Neveryu/vue-cms