156 lines
3.3 KiB
Markdown
156 lines
3.3 KiB
Markdown
|
||
|
||
使用 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
|
||
```
|