02 后台系统-前端工程搭建
1 后台系统-前端工程搭建
1.1 Element-Admin简介
Vue3 Element Admin 是一个免费开源的中后台模版。基于vue3+ElementPlus+Vite开发,是一个开箱即用的中后台系统前端解决方案,它可以帮助你快速搭建企业级中后台产品原型。
关于后端管理系统的前端工程,我们没有必要从0~1去开发,可以直接基于Vue3-Element-Admin项目模板进行二次开发,在Vue3-Element-Admin已经提供了一些基础性的功能【登录,首页布局、左侧导航菜单...】。
官网地址:https://huzhushan.gitee.io/vue3-element-admin/v1/guide/
1.2 Element-Admin部署
具体步骤如下所示:
# Vue3-Element-Admin 要求 Node.js 版本 >= 12 ,推荐Node.js 16.x版本
# 使用git克隆项目 或者 直接下载项目
git clone https://github.com/huzhushan/vue3-element-admin.git
# 进入项目目录
cd vue3-element-admin
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org
# 启动服务
npm start
修改页面项目bug:
# 将permission.js中的相关代码
# 原代码:import { TOKEN } from '@/store/modules/app' // TOKEN变量名
# 更改为如下代码:
import { TOKEN } from '@/pinia/modules/app' // TOKEN变量名
启动界面 :

1.3 项目目录介绍
部署好的前端工程的核心目录结构如下所示:
mock // 用于测试,模拟后端接口地址
public // 存储公共的静态资源:图片
src // 源代码目录,非常重要
| api // 提供用于请求后端接口的js文件
| assets // 存储静态资源:图片、css
| components // 存储公共组件,可重用的一些组件
| directive // 存储自定义的一些指令
| hooks // 存储自定义的钩子函数
| i18n // 存储用于国际化的js文件
| layout // 存储首页布局组件
| pinia // 用于进行全局状态管理
| router // 存储用于进行路由的js文件
| utils // 存储工具类的js文件
| views // 和路由绑定的组件
| App.vue // 根组件
| default-settings.js // 默认设置的js文件
| error-log.js // 错误日志js文件
| global-components.js // 全局组件的js文件
| main.js // 入口js文件(非常重要)
| permission.js // 权限相关的js文件(路由前置守卫、路由后置守卫)
vite.config.js // vite的配置文件,可以在该配置文件中配置前端工程的端口号
2 后台系统-后端工程搭建
本章节会给大家介绍一下如何开发尚品甄选项目中的第一个接口。
2.1 项目结构说明
- 尚品甄选的项目结构如下所示:

- 模块说明:
spzx-parent: 尚品甄选项目的父工程,进行项目依赖的统一管理,打包方式为pom
spzx-common: 尚品甄选项目公共模块的管理模块,父工程为spzx-parent
common-util: 工具类模块,父工程为spzx-common
common-service:公共服务模块,父工程为spzx-common
spzx-model: 尚品甄选实体类模块
spzx-manager: 尚品甄选项目后台管理系统的后端服务
- 一个项目中所涉及到的实体类往往有三种:
1、封装请求参数的实体类:这种实体类在定义的时候往往会携带到dto【数据传输对象:Data Transfer Object】字样,会定义在dto包中
2、与数据库对应的实体类:这种实体类往往和数据表名称保证一致,会定义在domain、entity、pojo包中
3、封装响应结果的实体类:这种实体类在定义的时候往往会携带到vo【视图对象:View Object】字样, 会定义在vo包中
2.2 模块依赖说明
模块之间的依赖关系如下图所示:

common-service会依赖:common-util、spzx-common
spzx-manager会依赖:common-service
2.3 环境说明
本次项目开发的时候所使用的软件环境版本如下所示:
| 软件名称 | 版本说明 |
|---|---|
| jdk | jdk17 |
| spring boot | 3.0.5 |
| spring cloud | 2022.0.2 |
| redis | 7.0.10 |
| mysql | 8.0.30 |
| idea | 2022.2.2 |
2.4 项目模块创建

2.4.1 spzx-parent
创建一个maven项目,导入如下依赖:
<!-- 指定父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mysql.verison>8.0.30</mysql.verison>
<fastjson.version>2.0.21</fastjson.version>
<lombok.version>1.18.20</lombok.version>
<mybatis.version>3.0.1</mybatis.version>
</properties>
<!-- 管理依赖,版本锁定 -->
<dependencyManagement>
<dependencies>
<!-- mybatis和spring boot整合的起步依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- lombok依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
注意:
1、设置项目的字符集为utf-8
2、删除src目录
2.4.2 spzx-common
在spzx-parent下面创建该子模块,并导入如下依赖:
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.2</version>
</dependency>
</dependencies>
2.4.3 common-util
在spzx-common下面创建该子模块,并导入如下依赖:
<dependencies>
<!-- fastjson依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>spzx-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided </scope>
</dependency>
</dependencies>
2.4.4 common-service
在spzx-common下面创建该子模块,并导入如下依赖:
<dependencies>
<!-- common-util模块 -->
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- spzx-model模块 -->
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>spzx-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- spring boot web开发所需要的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
2.4.5 spzx-model
- 在spzx-parent下面创建该子模块,并导入如下依赖:
<dependencies>
<!-- lombok的依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
</dependencies>
- 在资料中复制相关实体类
2.4.6 spzx-manager
在spzx-parent下面创建该子模块,并导入如下依赖:
<dependencies>
<!-- spring boot web开发所需要的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- redis的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- mybatis的起步依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- common-service依赖 -->
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>common-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.3</version>
</dependency>
</dependencies>
2.5 数据库环境准备
2.5.1 安装Mysql数据库
本地安装mysql数据库使用的是docker安装,对应的步骤如下所示:
- 部署mysql
开发阶段也可以连接本地mysql服务
# 拉取镜像
docker pull mysql:8.0.30
# 创建容器
docker run -d --name mysql -p 3306:3306 -v mysql_data:/var/lib/mysql -v mysql_conf:/etc/mysql --restart=always --privileged=true -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.30
docker安装完成mysql8,如果使用sqlyog或者navite连接,需要修改密码加密规则,因为低版本客户端工具不支持mysql8最新的加密规则。如果使用客户 端连接,需要修改:
-
docker exec 进入mysql容器
-
mysql -uroot -p 登录你的 MySQL 数据库,然后 执行这条SQL:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
然后再重新配置SQLyog的连接,重新填写密码,则可连接成功了。