项目演示地址: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 dependencies
npm install
# serve with hot reload at localhost:8080
npm start
完成上面这套操作,就可以在浏览器中输入:localhost:8080
看到项目了。
项目的外层目录文件,就没啥好说的了,本身也是用 vue-cli
来构建的,大家应该都清楚。我们主要来看一下 src
里面的内容。
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 中对要验证的字段配置 validator
rules: {
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