使用 vue3 + javascript 开发项目 - ✅ Vue3 - ✅ JavaScript - ✅ Pinia - ✅ Pnpm - ✅ Sass ## 工具库 utils ### 请求库 ​ 用作请求接口的,封装的 uni.request,返回一个 Promise。 **使用示例** - request(options, [config]) **options参考** | 名称 | 类型 | 必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | | url | `string` | 是 | - | 接口地址,示例:`/api/user/get` | | method | `string` | 否 | GET | 可选项 `GET` `POST` `PUT` `DELETE` `OPTIONS` 等,参考 uni.request method 参数有效值 | | data | `object` | 否 | - | 提交参数 | | header | `object` | 否 | - | 请求头,示例 `{ token: '你的 token'}` | **config参考** | 名称 | 类型 | 必填 | 默认值 | 备注 | | --- | --- | --- | --- | --- | | baseUrl | `string` | 否 | - | 基础接口地址, 读取 .env 的 VITE_APP_BASE_URL | | isReturnDefaultResponse | `bool` | 否 | false | 返回默认响应体,不做额外处理, 原样返回 | | isTransformResponse | `bool` | 否 | true | 转换响应体,false 直接返回 data, true 自动处理业务代码报错提示等(前提 isReturnDefaultResponse 是 false) | | ignoreCancel | `bool` | 否 | false | 忽略取消重复请求 | | retryCount | `number` | 否 | 2 | 重试次数 | | retryTimeout | `number` | 否 | 300 | 重试延迟 | | withToken | `bool` | 否 | true | 携带 token | | isAuth | `bool` | 否 | false | 接口是否鉴权,暂时无用,可在拦截器中扩展 | #### 请求示例 🏷️ 所有接口请求都必须放在 `src/api/` 目录下统一维护 ```javascript import request from '@/utils/request' // get 请求 export function getCaptchaImage() { return request.get({ url: '/api/captchaImage', }) } // post 请求 export function login(data) { return request.post({ url: '/api/user/login', data }) } ``` ### @/utils/cache.js 缓存工具 ```javascript import cache from '@/utils/cache.js' // 设置缓存 cache.set('token', '1b1b1b1b1b1') // 获取缓存 cache.get('token') // 1b1b1b1b1b1 // 删除缓存 cache.remove('token') // 获取时间戳 cache.time() // 1660060800 ``` ### @/utils/formatter.js 格式化工具 ```javascript import { maskPhoneNumber, maskIdNumber} from '@/utils/formatter.js' // 手机号加掩码 maskPhoneNumber('15112345678') // 151****5678 // 证件号码加掩码 maskIdNumber('110101198506020011') // 1101***********0011 ``` ### @/utils/message.js 操作反馈 ```javascript import { showToast, showAlert, showLoading, hideLoading, useMessage } from '@/utils/message.js' // toast showToast('操作成功') // 模态确认框 showAlert('操作成功,请确认') // 加载 loading showLoading('拼命加载中') hideLoading() // 组合式api const message = useMessage() message.toast('提交成功') message.success('操作成功') message.error('操作失败') message.alert('操作完成') message.showLoading() message.hideLoading() ``` ### @/utils/validate.js 验证库 ```javascript import { isUrl, isPhoneNumber, isIdCardValid, isHttpProtocol, isHttpsProtocol } from '@/utils/validate.js' isUrl('http://www.baidu.com') // true isPhoneNumber('15112345601') // true isIdCardValid('110101198506020011') // true isHttpProtocol('ftp://root@192.168.1.1') // false ```