@zfqh/uniapp 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +39 -0
- package/docs/api/apis/core.md +189 -0
- package/docs/api/apis/index.md +82 -0
- package/docs/api/apis/request.md +369 -0
- package/docs/api/configs/api.md +32 -0
- package/docs/api/configs/app.md +43 -0
- package/docs/api/configs/brand.md +43 -0
- package/docs/api/configs/cdn.md +35 -0
- package/docs/api/configs/color.md +144 -0
- package/docs/api/configs/env.md +120 -0
- package/docs/api/configs/index.md +394 -0
- package/docs/api/configs/link.md +33 -0
- package/docs/api/configs/log.md +27 -0
- package/docs/api/configs/mp.md +34 -0
- package/docs/api/configs/navigate.md +27 -0
- package/docs/api/configs/page.md +32 -0
- package/docs/api/configs/path.md +27 -0
- package/docs/api/configs/storage.md +24 -0
- package/docs/api/configs/tabbar.md +29 -0
- package/docs/api/configs/toast.md +35 -0
- package/docs/api/configs/update.md +25 -0
- package/docs/api/configs/upload.md +45 -0
- package/docs/api/configs/ver.md +32 -0
- package/docs/api/configs/web.md +28 -0
- package/docs/api/hooks/index.md +182 -0
- package/docs/api/hooks/useI18n.md +27 -0
- package/docs/api/hooks/useOverlay.md +37 -0
- package/docs/api/hooks/usePopup.md +35 -0
- package/docs/api/hooks/useVersion.md +23 -0
- package/docs/api/index.md +269 -0
- package/docs/api/mixins/app.md +29 -0
- package/docs/api/mixins/badge.md +23 -0
- package/docs/api/mixins/debounce.md +32 -0
- package/docs/api/mixins/deep.md +29 -0
- package/docs/api/mixins/index.md +23 -0
- package/docs/api/mixins/login.md +22 -0
- package/docs/api/mixins/model.md +26 -0
- package/docs/api/mixins/redirect.md +26 -0
- package/docs/api/mixins/share.md +29 -0
- package/docs/api/mixins/show.md +27 -0
- package/docs/api/mixins/webview.md +27 -0
- package/docs/api/modules/app.md +30 -0
- package/docs/api/modules/dict.md +28 -0
- package/docs/api/modules/im.md +22 -0
- package/docs/api/modules/index.md +44 -0
- package/docs/api/modules/launch.md +26 -0
- package/docs/api/modules/location.md +25 -0
- package/docs/api/modules/login.md +35 -0
- package/docs/api/modules/network.md +26 -0
- package/docs/api/modules/system.md +29 -0
- package/docs/api/utils/audio.md +84 -0
- package/docs/api/utils/consts.md +201 -0
- package/docs/api/utils/cos.md +269 -0
- package/docs/api/utils/debounce.md +89 -0
- package/docs/api/utils/file.md +78 -0
- package/docs/api/utils/index.md +547 -0
- package/docs/api/utils/locale.md +32 -0
- package/docs/api/utils/message.md +81 -0
- package/docs/api/utils/navigate.md +267 -0
- package/docs/api/utils/pages.md +205 -0
- package/docs/api/utils/permission.md +28 -0
- package/docs/api/utils/permit.md +62 -0
- package/docs/api/utils/query.md +89 -0
- package/docs/api/utils/request.md +34 -0
- package/docs/api/utils/storage.md +145 -0
- package/docs/api/utils/subscribe.md +77 -0
- package/docs/api/utils/throttle.md +101 -0
- package/docs/api/utils/toast.md +164 -0
- package/docs/api/utils/uni.md +28 -0
- package/docs/api/utils/update.md +165 -0
- package/docs/components/g-back-button.md +76 -0
- package/docs/components/g-checkbox-list.md +101 -0
- package/docs/components/g-container.md +93 -0
- package/docs/components/g-data-list.md +106 -0
- package/docs/components/g-dot-text.md +79 -0
- package/docs/components/g-env.md +75 -0
- package/docs/components/g-float.md +83 -0
- package/docs/components/g-grid-image.md +91 -0
- package/docs/components/g-grid-swiper.md +99 -0
- package/docs/components/g-icon.md +106 -0
- package/docs/components/g-mask.md +82 -0
- package/docs/components/g-money.md +90 -0
- package/docs/components/g-more.md +78 -0
- package/docs/components/g-page-container.md +170 -0
- package/docs/components/g-permission-popup.md +117 -0
- package/docs/components/g-polyline-chat.md +102 -0
- package/docs/components/g-polyline-view.md +67 -0
- package/docs/components/g-popup.md +144 -0
- package/docs/components/g-refresh-view.md +118 -0
- package/docs/components/g-render-image.md +83 -0
- package/docs/components/g-search.md +120 -0
- package/docs/components/g-share-photo.md +77 -0
- package/docs/components/g-share-view.md +83 -0
- package/docs/components/g-share-weixin.md +81 -0
- package/docs/components/g-skeleton-view.md +71 -0
- package/docs/components/g-skeleton.md +64 -0
- package/docs/components/g-tag-editor.md +134 -0
- package/docs/components/g-timer.md +72 -0
- package/docs/components/g-trtc-room.md +116 -0
- package/docs/components/g-trtc-tui.md +84 -0
- package/docs/components/g-trtc.md +124 -0
- package/docs/components/g-upload.md +117 -0
- package/docs/components/g-waterfall.md +84 -0
- package/docs/components/index.md +109 -0
- package/docs/components/styles/base-styles.md +367 -0
- package/docs/components/styles/global-vars.md +150 -0
- package/docs/components/usage.md +112 -0
- package/docs/faq/index.md +78 -0
- package/docs/guide/getting-started.md +195 -0
- package/docs/guide/project-frame.md +297 -0
- package/docs/index.md +80 -0
- package/lib/apis/core.d.ts +12 -0
- package/lib/apis/core.js +13 -0
- package/lib/apis/index.d.ts +2 -0
- package/lib/apis/index.js +2 -0
- package/lib/apis/request.d.ts +4 -0
- package/lib/apis/request.js +27 -0
- package/lib/components/g-back-button/g-back-button.vue +141 -0
- package/lib/components/g-checkbox-list/g-checkbox-list.vue +156 -0
- package/lib/components/g-container/g-container.vue +159 -0
- package/lib/components/g-data-list/g-data-list.vue +192 -0
- package/lib/components/g-dot-text/g-dot-text.vue +114 -0
- package/lib/components/g-env/g-env.vue +123 -0
- package/lib/components/g-float/g-float.vue +131 -0
- package/lib/components/g-grid-image/g-grid-image.vue +84 -0
- package/lib/components/g-grid-swiper/g-grid-swiper.vue +224 -0
- package/lib/components/g-icon/g-icon.vue +72 -0
- package/lib/components/g-mask/g-mask.vue +126 -0
- package/lib/components/g-money/g-money.vue +174 -0
- package/lib/components/g-more/g-more.vue +68 -0
- package/lib/components/g-page-container/g-page-container.vue +470 -0
- package/lib/components/g-permission-popup/g-permission-popup.vue +80 -0
- package/lib/components/g-polyline-chat/g-polyline-chat.vue +255 -0
- package/lib/components/g-polyline-view/g-polyline-view.vue +104 -0
- package/lib/components/g-popup/g-popup.vue +449 -0
- package/lib/components/g-refresh-view/g-refresh-view.vue +213 -0
- package/lib/components/g-render-image/g-render-image.vue +222 -0
- package/lib/components/g-search/g-search.vue +274 -0
- package/lib/components/g-share-photo/g-share-photo.vue +75 -0
- package/lib/components/g-share-view/g-share-view.vue +157 -0
- package/lib/components/g-share-weixin/g-share-weixin.vue +106 -0
- package/lib/components/g-skeleton/g-skeleton.vue +55 -0
- package/lib/components/g-skeleton-view/g-skeleton-view.vue +78 -0
- package/lib/components/g-tag-editor/g-tag-editor.vue +482 -0
- package/lib/components/g-timer/g-timer.vue +61 -0
- package/lib/components/g-trtc/g-trtc.vue +347 -0
- package/lib/components/g-trtc-room/g-trtc-room.vue +524 -0
- package/lib/components/g-trtc-room/iconfont.scss +59 -0
- package/lib/components/g-trtc-tui/g-trtc-tui.vue +245 -0
- package/lib/components/g-upload/g-upload.vue +294 -0
- package/lib/components/g-waterfall/g-waterfall.vue +101 -0
- package/lib/configs/api.d.ts +7 -0
- package/lib/configs/api.js +6 -0
- package/lib/configs/app.d.ts +26 -0
- package/lib/configs/app.js +50 -0
- package/lib/configs/brand.d.ts +22 -0
- package/lib/configs/brand.js +26 -0
- package/lib/configs/cdn.d.ts +13 -0
- package/lib/configs/cdn.js +12 -0
- package/lib/configs/color.d.ts +62 -0
- package/lib/configs/color.js +66 -0
- package/lib/configs/env.d.ts +37 -0
- package/lib/configs/env.js +71 -0
- package/lib/configs/index.d.ts +170 -0
- package/lib/configs/index.js +82 -0
- package/lib/configs/link.d.ts +11 -0
- package/lib/configs/link.js +3 -0
- package/lib/configs/log.d.ts +9 -0
- package/lib/configs/log.js +8 -0
- package/lib/configs/mp.d.ts +15 -0
- package/lib/configs/mp.js +9 -0
- package/lib/configs/navigate.d.ts +17 -0
- package/lib/configs/navigate.js +5 -0
- package/lib/configs/page.d.ts +18 -0
- package/lib/configs/page.js +14 -0
- package/lib/configs/path.d.ts +11 -0
- package/lib/configs/path.js +10 -0
- package/lib/configs/storage.d.ts +7 -0
- package/lib/configs/storage.js +6 -0
- package/lib/configs/tabbar.d.ts +7 -0
- package/lib/configs/tabbar.js +6 -0
- package/lib/configs/toast.d.ts +18 -0
- package/lib/configs/toast.js +29 -0
- package/lib/configs/update.d.ts +45 -0
- package/lib/configs/update.js +6 -0
- package/lib/configs/upload.d.ts +30 -0
- package/lib/configs/upload.js +7 -0
- package/lib/configs/ver.d.ts +8 -0
- package/lib/configs/ver.js +28 -0
- package/lib/configs/web.d.ts +5 -0
- package/lib/configs/web.js +2 -0
- package/lib/hooks/index.d.ts +4 -0
- package/lib/hooks/index.js +4 -0
- package/lib/hooks/useI18n.d.ts +2 -0
- package/lib/hooks/useI18n.js +19 -0
- package/lib/hooks/useOverlay.d.ts +1 -0
- package/lib/hooks/useOverlay.js +17 -0
- package/lib/hooks/usePopup.d.ts +1 -0
- package/lib/hooks/usePopup.js +14 -0
- package/lib/hooks/useVersion.d.ts +6 -0
- package/lib/hooks/useVersion.js +21 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +33 -0
- package/lib/mixins/app.d.ts +14 -0
- package/lib/mixins/app.js +105 -0
- package/lib/mixins/badge.d.ts +24 -0
- package/lib/mixins/badge.js +44 -0
- package/lib/mixins/debounce.d.ts +6 -0
- package/lib/mixins/debounce.js +11 -0
- package/lib/mixins/deep.d.ts +6 -0
- package/lib/mixins/deep.js +8 -0
- package/lib/mixins/index.d.ts +8 -0
- package/lib/mixins/index.js +8 -0
- package/lib/mixins/login.d.ts +4 -0
- package/lib/mixins/login.js +25 -0
- package/lib/mixins/model.d.ts +22 -0
- package/lib/mixins/model.js +29 -0
- package/lib/mixins/redirect.d.ts +8 -0
- package/lib/mixins/redirect.js +94 -0
- package/lib/mixins/share.d.ts +15 -0
- package/lib/mixins/share.js +55 -0
- package/lib/mixins/show.d.ts +9 -0
- package/lib/mixins/show.js +16 -0
- package/lib/mixins/webview.d.ts +26 -0
- package/lib/mixins/webview.js +225 -0
- package/lib/modules/app.d.ts +5 -0
- package/lib/modules/app.js +19 -0
- package/lib/modules/dict.d.ts +8 -0
- package/lib/modules/dict.js +43 -0
- package/lib/modules/im.d.ts +6 -0
- package/lib/modules/im.js +105 -0
- package/lib/modules/index.d.ts +8 -0
- package/lib/modules/index.js +8 -0
- package/lib/modules/launch.d.ts +5 -0
- package/lib/modules/launch.js +32 -0
- package/lib/modules/location.d.ts +5 -0
- package/lib/modules/location.js +57 -0
- package/lib/modules/login.d.ts +5 -0
- package/lib/modules/login.js +72 -0
- package/lib/modules/network.d.ts +5 -0
- package/lib/modules/network.js +39 -0
- package/lib/modules/system.d.ts +5 -0
- package/lib/modules/system.js +65 -0
- package/lib/styles/animate-vue.scss +3 -0
- package/lib/styles/animate.scss +27 -0
- package/lib/styles/bg-vue.scss +21 -0
- package/lib/styles/bg.scss +93 -0
- package/lib/styles/border.scss +218 -0
- package/lib/styles/flex-nvue.scss +64 -0
- package/lib/styles/flex-vue.scss +75 -0
- package/lib/styles/font.scss +59 -0
- package/lib/styles/index.scss +25 -0
- package/lib/styles/layout-nvue.scss +24 -0
- package/lib/styles/layout-vue.scss +30 -0
- package/lib/styles/layout.scss +76 -0
- package/lib/styles/opacity.scss +10 -0
- package/lib/styles/reset-vue.scss +46 -0
- package/lib/styles/shadow.scss +12 -0
- package/lib/styles/sizing-vue.scss +21 -0
- package/lib/styles/sizing.scss +21 -0
- package/lib/styles/spacing.scss +234 -0
- package/lib/styles/text-nvue.scss +21 -0
- package/lib/styles/text-vue.scss +70 -0
- package/lib/styles/text.scss +122 -0
- package/lib/styles/var.module.scss +29 -0
- package/lib/utils/audio.d.ts +14 -0
- package/lib/utils/audio.js +43 -0
- package/lib/utils/consts.d.ts +30 -0
- package/lib/utils/consts.js +52 -0
- package/lib/utils/cos.d.ts +15 -0
- package/lib/utils/cos.js +140 -0
- package/lib/utils/debounce.d.ts +2 -0
- package/lib/utils/debounce.js +30 -0
- package/lib/utils/file.d.ts +28 -0
- package/lib/utils/file.js +292 -0
- package/lib/utils/index.d.ts +166 -0
- package/lib/utils/index.js +485 -0
- package/lib/utils/locale.d.ts +6 -0
- package/lib/utils/locale.js +19 -0
- package/lib/utils/message.d.ts +9 -0
- package/lib/utils/message.js +63 -0
- package/lib/utils/navigate.d.ts +27 -0
- package/lib/utils/navigate.js +183 -0
- package/lib/utils/pages.d.ts +21 -0
- package/lib/utils/pages.js +79 -0
- package/lib/utils/permission.d.ts +16 -0
- package/lib/utils/permission.js +291 -0
- package/lib/utils/permit.d.ts +30 -0
- package/lib/utils/permit.js +181 -0
- package/lib/utils/query.d.ts +13 -0
- package/lib/utils/query.js +14 -0
- package/lib/utils/request.d.ts +8 -0
- package/lib/utils/request.js +126 -0
- package/lib/utils/storage.d.ts +53 -0
- package/lib/utils/storage.js +145 -0
- package/lib/utils/subscribe.d.ts +7 -0
- package/lib/utils/subscribe.js +94 -0
- package/lib/utils/throttle.d.ts +2 -0
- package/lib/utils/throttle.js +32 -0
- package/lib/utils/toast.d.ts +17 -0
- package/lib/utils/toast.js +66 -0
- package/lib/utils/uni.d.ts +1 -0
- package/lib/utils/uni.js +147 -0
- package/lib/utils/update.d.ts +9 -0
- package/lib/utils/update.js +376 -0
- package/package.json +49 -0
- package/types/index.d.ts +25 -0
- package/types/virtual.d.ts +1 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# 本地缓存
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/storage`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
给 uni storage 增加项目和环境命名空间,避免多环境缓存互相污染。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { getStorageSync, setStorageSync, removeStorageSync, storageKeys } from '@zfqh/uniapp';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
具体方法、参数语义和返回值以发布包类型为准;下方表格按 `@zfqh/uniapp/lib/utils/storage` 的导出整理。
|
|
22
|
+
|
|
23
|
+
## 命名空间规则
|
|
24
|
+
|
|
25
|
+
存储 key 会自动拼接 `config.storage.prefix` 和环境名(非 prod 环境)。实际存储的 key 格式为 `PREFIX_ENV_NAME`(全大写)。
|
|
26
|
+
|
|
27
|
+
例如 `storage.prefix` 为 `'zfqh'`,当前环境为 `sit`:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
setStorageSync('login', { token: 'xxx' });
|
|
31
|
+
// 实际存储 key: 'ZFQH_SIT_LOGIN'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
生产环境不拼接环境名:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
setStorageSync('login', { token: 'xxx' });
|
|
38
|
+
// 实际存储 key: 'ZFQH_LOGIN'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## storageKeys 内置常量
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import { storageKeys } from '@zfqh/uniapp';
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| 属性 | 值 | 用途 |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| `query` | `'query'` | URL query 参数缓存 |
|
|
50
|
+
| `login` | `'login'` | 登录信息(token、userId 等) |
|
|
51
|
+
| `user` | `'user'` | 用户信息 |
|
|
52
|
+
| `open` | `'open'` | 第三方开放平台信息 |
|
|
53
|
+
| `launch` | `'launch'` | 启动参数 |
|
|
54
|
+
| `location` | `'location'` | 定位信息 |
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
// 保存登录信息
|
|
58
|
+
setStorageSync(storageKeys.login, { token: 'xxx', userId: 1, tenantId: 1 });
|
|
59
|
+
|
|
60
|
+
// 读取登录信息
|
|
61
|
+
const loginInfo = getStorageSync(storageKeys.login);
|
|
62
|
+
|
|
63
|
+
// 删除缓存
|
|
64
|
+
removeStorageSync(storageKeys.login);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 完整工作流
|
|
68
|
+
|
|
69
|
+
### 同步操作(推荐在非异步上下文使用)
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
import { setStorageSync, getStorageSync, removeStorageSync } from '@zfqh/uniapp';
|
|
73
|
+
|
|
74
|
+
// 保存
|
|
75
|
+
setStorageSync('formData', { name: '张三', age: 30 });
|
|
76
|
+
|
|
77
|
+
// 读取
|
|
78
|
+
const form = getStorageSync('formData');
|
|
79
|
+
|
|
80
|
+
// 删除
|
|
81
|
+
removeStorageSync('formData');
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 异步操作
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import { setStorage, getStorage, removeStorage } from '@zfqh/uniapp';
|
|
88
|
+
|
|
89
|
+
// 保存
|
|
90
|
+
await setStorage('asyncKey', { data: 'value' });
|
|
91
|
+
|
|
92
|
+
// 读取
|
|
93
|
+
const result = await getStorage('asyncKey');
|
|
94
|
+
|
|
95
|
+
// 删除
|
|
96
|
+
await removeStorage('asyncKey');
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 清除全部缓存
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
import { clearStorageSync, clearStorage } from '@zfqh/uniapp';
|
|
103
|
+
|
|
104
|
+
// 同步清除(谨慎使用,会删除所有缓存包括其他应用的)
|
|
105
|
+
clearStorageSync();
|
|
106
|
+
|
|
107
|
+
// 异步清除
|
|
108
|
+
await clearStorage();
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 自定义 storageKeys
|
|
112
|
+
|
|
113
|
+
如果项目需要额外的缓存 key,可以用 `setStorageKeys` 扩展:
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
import { setStorageKeys, setStorageSync, getStorageSync } from '@zfqh/uniapp';
|
|
117
|
+
|
|
118
|
+
const myKeys = setStorageKeys({
|
|
119
|
+
constitution: '',
|
|
120
|
+
medicalRecord: '',
|
|
121
|
+
cartData: '',
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
setStorageSync(myKeys.constitution, { type: '气虚', score: 85 });
|
|
125
|
+
const data = getStorageSync(myKeys.constitution);
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## API
|
|
129
|
+
|
|
130
|
+
发布路径:`@zfqh/uniapp/lib/utils/storage`
|
|
131
|
+
|
|
132
|
+
| 名称 | 签名/声明 | 说明 |
|
|
133
|
+
| --- | --- | --- |
|
|
134
|
+
| `getStorageSync` | `export function getStorageSync(name: string) {` | 按 storage.prefix 和 env.name 生成命名空间 key 后同步读取缓存。 |
|
|
135
|
+
| `getStorage` | `export function getStorage(name: string) {` | 按命名空间 key 异步读取缓存。 |
|
|
136
|
+
| `setStorageSync` | `export function setStorageSync(name: string, data: any) {` | 按命名空间 key 同步写入缓存。 |
|
|
137
|
+
| `setStorage` | `export function setStorage(name: string, data: any) {` | 按命名空间 key 异步写入缓存。 |
|
|
138
|
+
| `removeStorageSync` | `export function removeStorageSync(name: string) {` | 按命名空间 key 同步删除缓存。 |
|
|
139
|
+
| `removeStorage` | `export function removeStorage(name: string) {` | 按命名空间 key 异步删除缓存。 |
|
|
140
|
+
| `clearStorageSync` | `export function clearStorageSync() {` | 同步清空全部本地缓存。 |
|
|
141
|
+
| `clearStorage` | `export function clearStorage() {` | 异步清空全部本地缓存。 |
|
|
142
|
+
| `setStorageKeys` | `export function setStorageKeys<T>(data: T) {` | 把对象每个字段值设置为字段名,用于生成稳定 storageKeys。 |
|
|
143
|
+
| `StorageKeys` | `export interface StorageKeys {` | 内置缓存 key 类型,包含 query、login、user、open、launch、location。 |
|
|
144
|
+
| `storageKeys` | `export const storageKeys: StorageKeys = setStorageKeys({` | 内置缓存 key 常量。 |
|
|
145
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 订阅消息
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/subscribe`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
封装微信小程序订阅消息调用。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { subscribeMessage } from '@zfqh/uniapp';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 签名
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
subscribeMessage(
|
|
25
|
+
data: string[] | { title: string; id: string }[],
|
|
26
|
+
acceptCallback?: (key: string) => void,
|
|
27
|
+
rejectCallback?: (key: string) => void,
|
|
28
|
+
): Promise<number>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- `data`:模板 ID 数组,或带 `title` 和 `id` 的对象数组(用于权限提示文案)
|
|
32
|
+
- `acceptCallback`:用户同意某个模板时触发
|
|
33
|
+
- `rejectCallback`:用户拒绝某个模板时触发
|
|
34
|
+
- 返回值:`1` 表示成功发起订阅,`0` 表示取消或失败
|
|
35
|
+
|
|
36
|
+
## 使用示例
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { subscribeMessage } from '@zfqh/uniapp';
|
|
40
|
+
|
|
41
|
+
// 简单用法:传入模板 ID 数组
|
|
42
|
+
await subscribeMessage([
|
|
43
|
+
'template-id-1',
|
|
44
|
+
'template-id-2',
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
// 带标题的用法:权限被关闭时显示友好提示
|
|
48
|
+
await subscribeMessage([
|
|
49
|
+
{ id: 'template-id-1', title: '订单发货通知' },
|
|
50
|
+
{ id: 'template-id-2', title: '物流更新通知' },
|
|
51
|
+
]);
|
|
52
|
+
|
|
53
|
+
// 处理用户选择
|
|
54
|
+
await subscribeMessage(
|
|
55
|
+
['template-id-1'],
|
|
56
|
+
(key) => console.log('同意:', key),
|
|
57
|
+
(key) => console.log('拒绝:', key),
|
|
58
|
+
);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 平台差异
|
|
62
|
+
|
|
63
|
+
仅在微信小程序端有效(`#ifdef MP-WEIXIN`)。非微信端调用会直接 resolve `0`。
|
|
64
|
+
|
|
65
|
+
内部会自动检测订阅权限状态:
|
|
66
|
+
|
|
67
|
+
- 主开关关闭时引导用户打开设置页
|
|
68
|
+
- 单个模板被拒绝时提示具体模板名称
|
|
69
|
+
|
|
70
|
+
## API
|
|
71
|
+
|
|
72
|
+
发布路径:`@zfqh/uniapp/lib/utils/subscribe`
|
|
73
|
+
|
|
74
|
+
| 名称 | 签名/声明 | 说明 |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| `subscribeMessage` | `export function subscribeMessage(` | 小程序订阅消息封装。 |
|
|
77
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# 节流
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/throttle`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
提供类实例和默认实例,适合重复跳转、登录退出、滚动加载等高频触发场景。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { Throttle, throttle } from '@zfqh/uniapp';
|
|
19
|
+
|
|
20
|
+
// 使用默认实例(简单场景)
|
|
21
|
+
throttle.exec(() => loadMore(), 500);
|
|
22
|
+
|
|
23
|
+
// 创建独立实例(多个节流互不干扰)
|
|
24
|
+
const submitThrottle = new Throttle();
|
|
25
|
+
submitThrottle.exec(() => submit(), 500);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## API
|
|
29
|
+
|
|
30
|
+
发布路径:`@zfqh/uniapp/lib/utils/throttle`
|
|
31
|
+
|
|
32
|
+
| 名称 | 签名/声明 | 说明 |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `Throttle` | `export default function Throttle()` | 节流类,可创建独立实例。 |
|
|
35
|
+
| `throttle` | `export const throttle = new Throttle();` | 默认节流实例,适合单一级流场景快捷使用。 |
|
|
36
|
+
|
|
37
|
+
### exec 方法
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
exec(func: Function, wait?: number, immediate?: boolean): void
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| 参数 | 默认值 | 说明 |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| `func` | - | 要执行的回调函数 |
|
|
46
|
+
| `wait` | `500` | 节流时间(毫秒) |
|
|
47
|
+
| `immediate` | `true` | 是否在 wait 开始时立即执行(默认立即执行,wait 内不再重复触发) |
|
|
48
|
+
|
|
49
|
+
## 典型场景
|
|
50
|
+
|
|
51
|
+
### 滚动加载更多
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import { throttle } from '@zfqh/uniapp';
|
|
55
|
+
|
|
56
|
+
function onScrollBottom() {
|
|
57
|
+
throttle.exec(() => {
|
|
58
|
+
loadMore();
|
|
59
|
+
}, 500);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 按钮防重复点击
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
const submitThrottle = new Throttle();
|
|
67
|
+
|
|
68
|
+
function onSubmit() {
|
|
69
|
+
submitThrottle.exec(() => {
|
|
70
|
+
submitForm(formData);
|
|
71
|
+
}, 1000); // 1秒内只执行一次
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 登录退出节流
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
import { throttle } from '@zfqh/uniapp';
|
|
79
|
+
|
|
80
|
+
function onLogout() {
|
|
81
|
+
throttle.exec(() => {
|
|
82
|
+
store.dispatch('logout');
|
|
83
|
+
}, 1000);
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 多个独立节流
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const scrollThrottle = new Throttle();
|
|
91
|
+
const clickThrottle = new Throttle();
|
|
92
|
+
|
|
93
|
+
// 互不影响
|
|
94
|
+
scrollThrottle.exec(() => loadMore(), 500);
|
|
95
|
+
clickThrottle.exec(() => navigate(url), 500);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 使用建议
|
|
99
|
+
|
|
100
|
+
- `throttle` 为共享实例;多个按钮、滚动加载或业务动作需要互不影响时,请分别 `new Throttle()`。
|
|
101
|
+
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# 提示反馈
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/toast`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
统一 loading、toast、success、error、fail、exception 和自定义提示组件适配。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { toast } from '@zfqh/uniapp';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 常用方法
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
// 加载中(显示 loading 遮罩)
|
|
25
|
+
toast.loading('加载中');
|
|
26
|
+
toast.loading('提交中', { mask: true }); // 禁止点击穿透
|
|
27
|
+
|
|
28
|
+
// 普通提示(icon: none,返回 Promise)
|
|
29
|
+
await toast.message('操作成功');
|
|
30
|
+
|
|
31
|
+
// 语义提示(自动设置对应 icon)
|
|
32
|
+
toast.success('保存成功');
|
|
33
|
+
toast.error('保存失败');
|
|
34
|
+
toast.fail('操作失败');
|
|
35
|
+
toast.exception('系统异常');
|
|
36
|
+
|
|
37
|
+
// 隐藏
|
|
38
|
+
toast.hideLoading(); // 隐藏 loading
|
|
39
|
+
toast.close(); // 隐藏 toast
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## loading 完整流程
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { toast, requestDelay } from '@zfqh/uniapp';
|
|
46
|
+
|
|
47
|
+
async function submitForm(data) {
|
|
48
|
+
try {
|
|
49
|
+
toast.loading('提交中');
|
|
50
|
+
await requestDelay(() => createOrder(data));
|
|
51
|
+
toast.success('提交成功');
|
|
52
|
+
} catch (e) {
|
|
53
|
+
toast.message(e.message || '提交失败');
|
|
54
|
+
} finally {
|
|
55
|
+
toast.hideLoading();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## message 返回 Promise
|
|
61
|
+
|
|
62
|
+
`toast.message` 会在 `duration`(默认 2000ms)后 resolve,适合需要等待提示消失再跳转的场景:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
await toast.message('已提交,即将返回');
|
|
66
|
+
navigate.back({ delta: 1 });
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 自定义 Toast
|
|
70
|
+
|
|
71
|
+
如果项目有自己的 Toast 组件,可在 `defineConfig` 中接入:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
defineConfig({
|
|
75
|
+
toast: {
|
|
76
|
+
custom: true,
|
|
77
|
+
show(options) {
|
|
78
|
+
const page = getCurrentPages().pop();
|
|
79
|
+
const result = page?.$vm?.$refs?.toast?.show({
|
|
80
|
+
type: ['error', 'success'].includes(options.icon) ? options.icon : 'default',
|
|
81
|
+
message: options.title,
|
|
82
|
+
});
|
|
83
|
+
return result !== false; // 返回 false 回退到原生 toast
|
|
84
|
+
},
|
|
85
|
+
hide() {
|
|
86
|
+
const page = getCurrentPages().pop();
|
|
87
|
+
const result = page?.$vm?.$refs?.toast?.hide();
|
|
88
|
+
return result !== false;
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## close 和 hideToast
|
|
95
|
+
|
|
96
|
+
`toast.close()` 和 `toast.hideToast()` 是同一个函数,用于隐藏当前显示的 toast。`toast.hideLoading()` 用于隐藏 loading 遮罩,两者互不影响。
|
|
97
|
+
|
|
98
|
+
## API
|
|
99
|
+
|
|
100
|
+
发布路径:`@zfqh/uniapp/lib/utils/toast`
|
|
101
|
+
|
|
102
|
+
| 名称 | 签名/声明 | 说明 |
|
|
103
|
+
| --- | --- | --- |
|
|
104
|
+
| `loading` | `export const loading = (` | 显示 loading,可传 title 或 ShowLoadingOptions。 |
|
|
105
|
+
| `message` | `export const message = (` | 显示普通 toast,默认 icon 为 none,返回 duration 后 resolve 的 Promise。 |
|
|
106
|
+
| `close` | `export const close = () => {` | 隐藏 toast;custom toast 开启时优先调用 toastConfig.hide。 |
|
|
107
|
+
| `hideToast` | `export const hideToast = close;` | close 的别名。 |
|
|
108
|
+
| `hideLoading` | `export const hideLoading = () => uni.hideLoading();` | 调用 uni.hideLoading。 |
|
|
109
|
+
| `toast.loading(titleOrOptions, options?)` | `default export member` | 显示 loading。 |
|
|
110
|
+
| `toast.message(titleOrOptions, options?)` | `default export member` | 显示普通提示并在 duration 后 resolve。 |
|
|
111
|
+
| `toast.success/error/fail/exception(titleOrOptions, options?)` | `default export member` | 按对应 icon 显示 toast。 |
|
|
112
|
+
| `toast.close()/toast.hideToast()` | `default export member` | 隐藏 toast。 |
|
|
113
|
+
| `toast.hideLoading()` | `default export member` | 隐藏 loading。 |
|
|
114
|
+
|
|
115
|
+
## toast 使用指南
|
|
116
|
+
|
|
117
|
+
根入口导出:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
import { toast } from '@zfqh/uniapp';
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
用法:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
toast.loading('加载中');
|
|
127
|
+
toast.message('普通提示');
|
|
128
|
+
toast.success('保存成功');
|
|
129
|
+
toast.error('保存失败');
|
|
130
|
+
toast.fail('操作失败');
|
|
131
|
+
toast.exception('系统异常');
|
|
132
|
+
toast.hideLoading();
|
|
133
|
+
toast.close();
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`toast.message` 返回 Promise,会在 toast duration 后 resolve:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
await toast.message('已提交');
|
|
140
|
+
navigate.back({ delta: 1 });
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 自定义 Toast
|
|
144
|
+
|
|
145
|
+
在配置中开启:
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
defineConfig({
|
|
149
|
+
toast: {
|
|
150
|
+
custom: true,
|
|
151
|
+
show(options) {
|
|
152
|
+
const page = getCurrentPages().pop() as any;
|
|
153
|
+
return page?.$vm?.$refs?.toast?.show({
|
|
154
|
+
type: ['error', 'success'].includes(options.icon as string) ? options.icon : 'default',
|
|
155
|
+
message: options.title,
|
|
156
|
+
}) !== false;
|
|
157
|
+
},
|
|
158
|
+
hide() {
|
|
159
|
+
const page = getCurrentPages().pop() as any;
|
|
160
|
+
return page?.$vm?.$refs?.toast?.hide() !== false;
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# uni 运行时补丁
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/uni`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
包含平台运行时补丁或内部实现,一般不直接调用。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import uni from '@zfqh/uniapp/lib/utils/uni';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
具体方法、参数语义和返回值以发布包类型为准;下方表格按 `@zfqh/uniapp/lib/utils/uni` 的导出整理。
|
|
22
|
+
|
|
23
|
+
## API
|
|
24
|
+
|
|
25
|
+
发布路径:`@zfqh/uniapp/lib/utils/uni`
|
|
26
|
+
|
|
27
|
+
该文件只包含运行时补丁或平台专用内部实现,没有具名导出。
|
|
28
|
+
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# 应用更新
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/update`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
统一检查 App、Electron H5、小程序更新,处理热更新、整包更新和应用重启。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { update } from '@zfqh/uniapp';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 检查更新
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { update } from '@zfqh/uniapp';
|
|
25
|
+
|
|
26
|
+
// 常规检查(弹出确认框让用户选择)
|
|
27
|
+
await update.check();
|
|
28
|
+
|
|
29
|
+
// 强制更新(跳过确认框,直接下载)
|
|
30
|
+
await update.check(true);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`check(immediate?: boolean)` 会根据平台自动选择更新方式:
|
|
34
|
+
|
|
35
|
+
| 平台 | 更新方式 |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| App(Android/iOS) | 热更新(wgt)或整包更新(apk/ipa) |
|
|
38
|
+
| H5(Electron) | 热更新(zip)或整包更新(exe/dmg) |
|
|
39
|
+
| 微信小程序 | `getUpdateManager` 原生更新 |
|
|
40
|
+
|
|
41
|
+
## 配置 update.request
|
|
42
|
+
|
|
43
|
+
需要在 `defineConfig` 中配置获取版本信息的请求函数:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import { defineConfig } from '@zfqh/uniapp';
|
|
47
|
+
import { POST } from '@zfqh/uniapp/lib/apis';
|
|
48
|
+
|
|
49
|
+
defineConfig({
|
|
50
|
+
update: {
|
|
51
|
+
request(data) {
|
|
52
|
+
return POST('/app-api/system/app/version/latest', data);
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
请求参数包含:
|
|
59
|
+
|
|
60
|
+
| 字段 | 说明 |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `appId` | 当前应用 ID |
|
|
63
|
+
| `appName` | 当前应用名称 |
|
|
64
|
+
| `versionCode` | 当前资源版本号 |
|
|
65
|
+
| `versionName` | 当前资源版本名 |
|
|
66
|
+
| `appVersionCode` | 当前程序版本号 |
|
|
67
|
+
| `appVersionName` | 当前程序版本名 |
|
|
68
|
+
| `platform` | 当前平台 |
|
|
69
|
+
|
|
70
|
+
响应字段:
|
|
71
|
+
|
|
72
|
+
| 字段 | 说明 |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| `hot_update` | 是否热更新(1 = 热更新) |
|
|
75
|
+
| `force_update` | 是否强制更新 |
|
|
76
|
+
| `external_install` | 是否外部安装(Android 整包更新时跳浏览器) |
|
|
77
|
+
| `wgt_url` | App WGT 热更新资源地址 |
|
|
78
|
+
| `zip_url` | H5 Electron 热更新资源包地址 |
|
|
79
|
+
| `apk_url` | Android 安装包地址 |
|
|
80
|
+
| `ipa_url` | iOS 安装包地址 |
|
|
81
|
+
| `exe_url` | Windows 安装包地址 |
|
|
82
|
+
| `dmg_url` | macOS 安装包地址 |
|
|
83
|
+
|
|
84
|
+
## 典型用法
|
|
85
|
+
|
|
86
|
+
在 `App.vue` 的 `onLaunch` 或 `onShow` 中检查更新:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { update } from '@zfqh/uniapp';
|
|
90
|
+
|
|
91
|
+
export default {
|
|
92
|
+
onShow() {
|
|
93
|
+
// 非开发环境检查更新
|
|
94
|
+
// #ifndef H5
|
|
95
|
+
update.check();
|
|
96
|
+
// #endif
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
在 Updater 组件中使用强制更新:
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
// 用户点击"立即更新"按钮
|
|
105
|
+
async function onUpdate() {
|
|
106
|
+
await update.check(true); // 立即更新,不弹确认框
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## API
|
|
111
|
+
|
|
112
|
+
发布路径:`@zfqh/uniapp/lib/utils/update`
|
|
113
|
+
|
|
114
|
+
| 名称 | 签名/声明 | 说明 |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| `update.check(immediate?)` | `default export member` | 检查 App/H5 Electron/小程序更新;immediate 为 true 时尽量跳过确认直接下载或应用更新。 |
|
|
117
|
+
|
|
118
|
+
## App 更新
|
|
119
|
+
|
|
120
|
+
根入口导出:
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
import { update } from '@zfqh/uniapp';
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
更新配置:
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
defineConfig({
|
|
130
|
+
update: {
|
|
131
|
+
request(data) {
|
|
132
|
+
return POST('/app-api/system/app/version/latest', data);
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
请求参数可能包含:
|
|
139
|
+
|
|
140
|
+
| 字段 | 说明 |
|
|
141
|
+
| --- | --- |
|
|
142
|
+
| `appId` | 当前应用 ID。 |
|
|
143
|
+
| `appName` | 当前应用名称。 |
|
|
144
|
+
| `versionCode` | 当前资源版本号。 |
|
|
145
|
+
| `versionName` | 当前资源版本名。 |
|
|
146
|
+
| `appVersionCode` | 当前程序版本号。 |
|
|
147
|
+
| `appVersionName` | 当前程序版本名。 |
|
|
148
|
+
| `platform` | 当前平台。 |
|
|
149
|
+
|
|
150
|
+
响应字段可能包含:
|
|
151
|
+
|
|
152
|
+
| 字段 | 说明 |
|
|
153
|
+
| --- | --- |
|
|
154
|
+
| `hot_update` | 是否热更新。 |
|
|
155
|
+
| `version_code` | 新版本号。 |
|
|
156
|
+
| `force_update` | 是否强制更新。 |
|
|
157
|
+
| `external_install` | 是否外部安装。 |
|
|
158
|
+
| `wgt_url` | App WGT 资源地址。 |
|
|
159
|
+
| `zip_url` | 桌面资源包地址。 |
|
|
160
|
+
| `apk_url` | Android 安装包地址。 |
|
|
161
|
+
| `ipa_url` | iOS 安装包地址。 |
|
|
162
|
+
| `exe_url` | Windows 安装包地址。 |
|
|
163
|
+
| `dmg_url` | macOS 安装包地址。 |
|
|
164
|
+
|
|
165
|
+
具体更新执行逻辑以 `@zfqh/uniapp/lib/utils/update` 的发布实现为准。
|