9.16 工具函数
概述
utils/ 提供通用工具:HTTP 封装(9.4 已述)、Storage 本地存储、auth 路径工具、downloadFile 下载、dateUtil/formatTime 时间、validate 校验、is 类型判断、urlUtils 等。本节速查常用函数。
utils/ 工具地图
| 文件/目录 | 职责 | 常用函数 |
|---|---|---|
| http/axios | HTTP 封装 | http.request(详见 9.4) |
| Storage.ts | 本地存储封装 | storage.get/set/remove(token 等) |
| auth.ts | 路由/树工具 | getNormalPath、isExternal、findTreeByPath、objectToQuery |
| downloadFile.ts | 文件下载 | 导出 URL 触发浏览器下载 |
| dateUtil.ts / formatTime.ts | 日期处理 | dayjs 封装、格式化 |
| validate.ts | 校验 | 表单校验辅助 |
| urlUtils.ts | URL 工具 | setObjToUrlParams(参数拼接) |
| is/ | 类型判断 | isString/isUrl/isEmpty… |
| helper/ lib/ file/ | 辅助函数库 | 按需探索 |
| propTypes.ts | prop 类型 | 组件 prop 校验 |
| color.ts | 颜色 | 主题色处理 |
| log.ts | 日志 | 调试日志 |
| lodashChunk.ts | 分块 | 数组分块 |
| useLockFn.ts | 防重 | 函数锁(防连点) |
| wartermark.ts | 水印 | 水印绘制 |
Storage(令牌存取核心)
ts
import { storage } from '@/utils/Storage';
storage.get(ACCESS_TOKEN); // 守卫/拦截器读取
storage.set(ACCESS_TOKEN, v); // 登录写入
storage.remove(ACCESS_TOKEN); // 登出清除
// ACCESS_TOKEN 键名常量在 store/mutation-types.tsauth.ts 路径工具(守卫消费)
text
isExternal(path) 是否外链(https?:/mailto:/tel:)
getNormalPath(path) 路径归一(去重复斜杠/尾斜杠)
findTreeByPath 按 path 查菜单树节点(首个可达路由定位)
objectToQuery 对象转 query 字符串下载与时间
ts
// 导出下载:后端返回文件 URL → 触发浏览器下载
import { downloadFile } from '@/utils/downloadFile';
downloadFile(url);
// 日期:dayjs 封装
import { formatTime } from '@/utils/dateUtil';hooks/ 配合(组合式复用)
text
hooks/core/ 核心(useMessage 等)
hooks/setting/ useGlobSetting(读环境变量)/ useDesign(主题)
hooks/web/ useBattery/useOnline/useTime 等浏览器能力
hooks/event/ 事件使用规约
- 工具函数无业务依赖(不 import api/store)——保持纯函数/低耦合
- 新增公共工具放 utils/,仅页面用的放页面目录或 hooks
- 日期统一 dayjs(勿混用 moment/原生拼串)
- 本地存储统一 storage 封装(不直接 localStorage——便于前缀/过期管理)
- 类型判断用 is/ 目录(勿手写 toString 判断)