通用方法
本小节,分享前端项目的常用方法和工具类。
# 1. 工具类
项目的工具类位于 src/utils (opens new window) 目录。
| 文件 | 作用 |
|---|---|
index.ts | 通用工具(路由解析、页面跳转、环境配置等) |
date.ts | 日期格式化、相对时间 |
tree.ts | 树形结构构建、查找 |
constants.ts | 枚举常量导出 |
debounce.ts | 防抖函数 |
download.ts | 文件下载 |
encrypt.ts | 加解密 |
validator.ts | 表单验证 |
url.ts | URL 处理 |
systemInfo.ts | 系统信息获取 |
toLoginPage.ts | 跳转登录页 |
# 2. Hooks
项目的 Hooks 位于 src/hooks (opens new window) 目录。
| 文件 | 作用 |
|---|---|
useRequest.ts | 异步请求封装 |
useScroll.ts | 分页滚动加载 |
useDict.ts | 字典数据 |
useAccess.ts | 权限控制 |
useUpload.ts | 文件上传 |
# 3. 枚举类
项目在 src/utils/constants (opens new window) 目录定义了枚举类。
# 3.1 字典枚举
字典枚举定义在 dict-enum.ts (opens new window) 中,对应后端字典管理的字典类型 KEY。
import { DICT_TYPE } from '@/utils/constants'
// 使用字典类型
DICT_TYPE.COMMON_STATUS // 'common_status'
DICT_TYPE.SYSTEM_USER_SEX // 'system_user_sex'
DICT_TYPE.BPM_TASK_STATUS // 'bpm_task_status'
# 3.2 业务枚举
业务枚举用于前端业务逻辑判断,避免"魔法值"。
| 文件 | 模块 |
|---|---|
biz-system-enum.ts | 系统模块(状态、菜单类型、角色类型等) |
biz-infra-enum.ts | 基础设施模块 |
biz-bpm-enum.ts | 工作流模块 |
import { CommonStatusEnum, SystemMenuTypeEnum } from '@/utils/constants'
// 通用状态
if (status === CommonStatusEnum.ENABLE) { /* 开启 */ }
if (status === CommonStatusEnum.DISABLE) { /* 禁用 */ }
// 菜单类型判断
if (menuType === SystemMenuTypeEnum.DIR) { /* 目录 */ }
if (menuType === SystemMenuTypeEnum.MENU) { /* 菜单 */ }
if (menuType === SystemMenuTypeEnum.BUTTON) { /* 按钮 */ }
# 4. 缓存配置
项目使用 Pinia (opens new window) 进行状态管理,配合 pinia-plugin-persistedstate 插件实现数据持久化。
Store 文件位于 src/store (opens new window) 目录下:
store/
├── index.ts # Store 入口,统一导出
├── user.ts # 用户信息(用户、角色、权限)
├── token.ts # Token 管理(登录、登出、刷新令牌)
├── dict.ts # 字典数据缓存
└── theme.ts # 主题配置
官方文档
详细的 Store 使用方式,请参考:《unibest 官方文档 —— 状态管理篇》 (opens new window) 文档。
持久化数据存储在:
- H5:localStorage
- 小程序:uni.setStorageSync
- App:uni.setStorageSync