# umi-admins
**Repository Path**: lihongyao/umi-admins
## Basic Information
- **Project Name**: umi-admins
- **Description**: 基于umiMax + Ant Design Pro 封装的后台管理系统模板
- **Primary Language**: TypeScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2023-09-02
- **Last Updated**: 2025-08-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 前言
在公司做项目时,如果不是面向企业用户(toB)或者对布局排版有特殊要求,后台管理系统通常是基于框架进行开发,灵活地实现功能。由于我在开发后台管理系统时通常使用 React 和 Ant Design,为了方便后期的复用,我基于常见的业务需求搭建了一套框架,使用 Umijs、TypeScript、axios 和 ProComponents 构建了一个后台管理系统模板。
需要注意的是,我并没有直接使用 ProComponents 的整套模板进行二次封装,因为全量代码过于庞大,很多功能并不需要,显得冗余。我选择基于 [Umijs](https://umijs.org/) 的 Simple 模板进行开发,并根据具体的业务场景安装必要的依赖。
**框架环境**:
node:v22.19.0
pnpm:10.15.1
**仓库地址**:https://gitee.com/lihongyao/umi-admins
# 目录结构
```
umi-admins
.
├── .husky # git提交规范
├── .config # 配置文件
│ ├── config.development.ts # 开发环境
│ ├── config.production.ts # 生产环境
│ ├── config.qa.ts # 测试环境
│ ├── config.ts # 统一配置
│ ├── defaultSettings.ts # 默认配置
│ └── routes.ts # 路由配置
├── mock
│ └── apis.ts # 数据mock,前期开发时模拟后端数据结构
├── public # 该文件下的目录打包时将直接拷贝至根目录
├── src # 源码文件
│ ├── api # 前后端交互
│ │ ├── apiConfig # axios 封装,请求拦截、响应拦截,统一异常处理
│ │ └── apiServer # 业务接口定义,命名格式:apiXXX,在index.ts中统一导出
│ │ │ ├── typings.d.ts # 统一接口TS类型定义
│ │ │ └── ....
│ ├── assets # 静态资源
│ ├── components # 全局组件
│ │ ├── @lgs # 自己封装的常用组件
│ │ └── .... # 项目内通用组件
│ ├── constants # 全局常量定义
│ ├── hooks # Hooks
│ ├── models # 状态管理
│ ├── pages # 业务页面
│ ├── utils # 工具类
│ ├── access.ts # 权限管理
│ ├── app.tsx # 全局配置:Layout...
│ ├── global.less # 全局样式
│ ├── global.tsx # 全局脚本
│ ├── .env # 环境变量,主要配置PORT/HOST(本地启动域名)
│ └── .env.d.ts # 环境变量,类型定义,主要针对于 config.xxx.ts 中定义的变量做类型声明
└── ... # 杂项配置文件
```
# 指南
1. 克隆项目 OR 下载到本地
2. 在编辑器中打开项目(推荐私用 `VSCode`)
3. 安装依赖:`pnpm install`
4. 在 **`configs/config.development.ts`** 文件中修改 **后台 A** 的 IP 地址为本机地址
5. 启动项目:`pnpm dev`
# 前后端交互约定
响应数据类型
```ts
// -- 基础响应结构
export interface AxiosResult {
/** 状态码 */
code: number;
/** 响应数据 */
data: T;
/** 提示信息 */
msg: string;
}
// -- 列表响应结构
interface List {
/** 列表数据 */
data: T[];
/** 当前页 */
current: number;
/** 每页条数 */
pageSize: number;
/** 总条数 */
total: number;
}
const response: AxiosResult>;
// -- 列表请求
interface ListParams {
/** 当前页 */
current?: number;
/** 每页大小 */
pageSize?: number;
/** 其他过滤项属性 */
[__prop__: string]: any;
}
```
推荐使用 RESTful API,这里以商品为例:
```ts
// 1.新建商品
POST /api/goods
// 2.更新商品
PUT /api/goods
// 3.获取商品列表
GET /api/goods
// 4.获取商品详情
GET /api/goods/:id
// 5.删除商品
DELETE /api/goods/:id
// 6.切换商品某个状态
PUT /api/goods/switch-status/:id
```
> 以上约定,仅供参考
# 提示
有任何问题欢迎留言,或+微信:17398888669
# 异常处理
## 1. git commit 规范
在 macOS 系统中,当你执行 git commit 时并不会去校验提交规范,控制台抛出如下提示:
```shell
hint: The '.husky/pre-commit' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The '.husky/commit-msg' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
```
解决方案 → 控制台输入如下指令:
```shell
$ chmod 777 .husky/*
```
再次提交时,将会触发 git 提交规范校验。