使用Vue-Admin-Template快速搭建基于ElementUI后台管理框架

188 阅读3分钟
  • 本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

作为后端开发,如果能自己独立快速搭建出来一个管理系统框架,并且能独立维护,那也是非常的Nice的。在平时自己练习前端代码,掌握一部分前端知识,也是提升了自己的硬实力,在面试中也是可以加分的!下面带大家展示如何从0开始搭建管理台,配合Api为大家实现功能。

开源Vue-Admin-Template

选择Vue-Admin-Template就是因为它简单,上手容易,开源。GitHub地址直接拉取即可,下图为默认项目结构,简单为大家讲解一下。

  • build:构建相关资源文件
  • mock: 一些模拟数据
  • public:静态资源
  • src:包括所有请求、页面、公用组件、路由、入口文件等等
  • vue.config.js:vue cli配置
  • .....

image.png

先决条件:Node环境、git环境

由于node版本太多,切换起来非常麻烦,建议使用nvm,灵活安装,切换项目所需要的node版本,使用起来更灵活。

//拉取仓库代码
git clone https://github.com/PanJiaChen/vue-admin-template.git
//还原node_modules包
npm install
//启动代码
npm run dev

运行效果如下,注意:默认使用了Mock数据

image.png

使用自己的Api实现登录

配置的时候要注意根目录的几个文件

  • .env.development 本地开发环境
  • .env.staging 测试环境
  • .env.production 正式环境

我自己搭建了本地的后端服务,本文均在本地调试,修改.env.development的VUE_APP_BASE_API配置即可!

image.png

  • 接下来我们找到Login页面,找到调用方法的地方

所有api.js请求都在request.js中,由于Api设计风格各异,大家可以在requst.js中进行修改,封装错误提示返回信息,以及使用Store(全局存储)Token用于保存用户登录凭证。

handleLogin() {
  this.$refs.loginForm.validate(valid => {
    if (valid) {
      this.loading = true
      this.$store.dispatch('user/login', this.loginForm).then(() => {
        this.$router.push({ path: this.redirect || '/' })
        this.loading = false
      }).catch(() => {
        this.loading = false
      })
    } else {
      console.log('error submit!!')
      return false
    }
  })
}
  • 后端定义的Login授权方法

image.png 错误返回

{
  "statusCode": 500,
  "data": null,
  "succeeded": false,
  "errors": "[u1000] 用户名或密码不正确",
  "extras": null,
  "timestamp": 1659494976299
}

正常返回

{
  "statusCode": 200,
  "data": {
    "id": 1,
    "account": "admin",
    "accessToken": "...................",
    "nickname": "张三",
    "photo": "................",
    "signinedTime": "2022-08-03T10:52:10.4247863+08:00"
  },
  "succeeded": true,
  "errors": null,
  "extras": null,
  "timestamp": 1659495130425
}
  • 修改请求(修改默认request.js)

image.png

  • 为Api请求添加Token授权验证

image.png

这里用到了全局存储Vuex.Store,在Store文件夹下配置,可根据自己Api返回格式进行SetToken操作,再调用其他Api的时候,直接读取缓存里面的Token放置到请求头即可。

  • 新增页面
    • 直接再views文件夹下创建User文件夹新增index.vue文件
    • 在router文件夹下index.js文件新增constantRoutes节点

image.png 页面配置也可以通过后端Api返回再进行渲染,通过权限来控制菜单按钮展示也可以的,根据项目复杂度来决定是否要加一些配置,当然不需要的页面也可以直接干掉。

  • 引入依赖(直接在main.js里引入即可全局使用)
import countTo from 'vue-count-to'
Vue.component('countTo', countTo)
  • 构建和发布(建议使用Docker部署,新增Dockfile文件)
# 打包正式环境
npm run build:prod

# 打包预发布环境
npm run build:stage

image.png

总结

这一套下来看上去其实还是非常简单的,前端的活都比较细致,使用过程中也需要注意一些使用,也是有非常多的坑的,这一套框架使用门槛还是比较低的,基本会一点点Vue语法基础就能上手搬砖,不过光靠搬砖前端遇到问题也是非常苦恼的,像各种包的依赖,解决包冲突这些地方确实也是很麻烦。身为后端开发,我觉得自己撸一下前端代码,写起来也并不吃力,可以一起来上手试试。

  • 路过掘友们点个赞再走吧