@gmcb/uv-ui 0.2.27 → 0.3.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.
Files changed (135) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/README.md +95 -141
  4. package/docs/api/configs/color.md +52 -0
  5. package/docs/api/index.md +77 -0
  6. package/docs/api/mixins/mpShare.md +95 -0
  7. package/docs/api/request/apiManage.md +88 -0
  8. package/docs/api/request/http.md +451 -0
  9. package/docs/api/utils/colorSwitch.md +78 -0
  10. package/docs/api/utils/debounce.md +104 -0
  11. package/docs/api/utils/fastUse.md +246 -0
  12. package/docs/api/utils/getRect.md +238 -0
  13. package/docs/api/utils/guid.md +41 -0
  14. package/docs/api/utils/index.md +55 -0
  15. package/docs/api/utils/intro.md +25 -0
  16. package/docs/api/utils/object.md +171 -0
  17. package/docs/api/utils/queryParams.md +68 -0
  18. package/docs/api/utils/random.md +23 -0
  19. package/docs/api/utils/randomArray.md +28 -0
  20. package/docs/api/utils/route.md +121 -0
  21. package/docs/api/utils/test.md +237 -0
  22. package/docs/api/utils/time.md +81 -0
  23. package/docs/api/utils/trim.md +24 -0
  24. package/docs/components/actionSheet.md +236 -0
  25. package/docs/components/addQQGroup.md +5 -0
  26. package/docs/components/album.md +91 -0
  27. package/docs/components/alert.md +83 -0
  28. package/docs/components/avatar.md +152 -0
  29. package/docs/components/backTop.md +181 -0
  30. package/docs/components/badge.md +117 -0
  31. package/docs/components/button.md +196 -0
  32. package/docs/components/calendar.md +398 -0
  33. package/docs/components/calendars.md +294 -0
  34. package/docs/components/cell.md +185 -0
  35. package/docs/components/checkbox.md +281 -0
  36. package/docs/components/circleProgress.md +5 -0
  37. package/docs/components/code.md +162 -0
  38. package/docs/components/codeInput.md +175 -0
  39. package/docs/components/collapse.md +250 -0
  40. package/docs/components/color.md +324 -0
  41. package/docs/components/common.md +126 -0
  42. package/docs/components/countDown.md +166 -0
  43. package/docs/components/countTo.md +140 -0
  44. package/docs/components/datetimePicker.md +283 -0
  45. package/docs/components/diff1.x.md +190 -0
  46. package/docs/components/divider.md +88 -0
  47. package/docs/components/downloadSetting.md +54 -0
  48. package/docs/components/dropDown.md +375 -0
  49. package/docs/components/empty.md +99 -0
  50. package/docs/components/feature.md +261 -0
  51. package/docs/components/form.md +736 -0
  52. package/docs/components/gap.md +49 -0
  53. package/docs/components/grid.md +225 -0
  54. package/docs/components/icon.md +101 -0
  55. package/docs/components/image.md +182 -0
  56. package/docs/components/index.md +110 -0
  57. package/docs/components/indexList.md +133 -0
  58. package/docs/components/input.md +250 -0
  59. package/docs/components/install.md +59 -0
  60. package/docs/components/intro.md +32 -0
  61. package/docs/components/keyboard.md +226 -0
  62. package/docs/components/layout.md +310 -0
  63. package/docs/components/line.md +85 -0
  64. package/docs/components/lineProgress.md +141 -0
  65. package/docs/components/link.md +89 -0
  66. package/docs/components/list.md +223 -0
  67. package/docs/components/loadMore.md +140 -0
  68. package/docs/components/loadingIcon.md +144 -0
  69. package/docs/components/loadingPage.md +92 -0
  70. package/docs/components/modal.md +230 -0
  71. package/docs/components/more.md +13 -0
  72. package/docs/components/navbar.md +192 -0
  73. package/docs/components/noNetwork.md +116 -0
  74. package/docs/components/noticeBar.md +131 -0
  75. package/docs/components/notify.md +204 -0
  76. package/docs/components/npmSetting.md +64 -0
  77. package/docs/components/numberBox.md +257 -0
  78. package/docs/components/nvue.md +170 -0
  79. package/docs/components/overlay.md +117 -0
  80. package/docs/components/parse.md +204 -0
  81. package/docs/components/pickColor.md +112 -0
  82. package/docs/components/picker.md +357 -0
  83. package/docs/components/popup.md +221 -0
  84. package/docs/components/problem.md +300 -0
  85. package/docs/components/qrcode.md +169 -0
  86. package/docs/components/quickstart.md +33 -0
  87. package/docs/components/radio.md +256 -0
  88. package/docs/components/rate.md +128 -0
  89. package/docs/components/read.md +163 -0
  90. package/docs/components/readMore.md +227 -0
  91. package/docs/components/resource.md +17 -0
  92. package/docs/components/scrollList.md +218 -0
  93. package/docs/components/search.md +160 -0
  94. package/docs/components/setting.md +111 -0
  95. package/docs/components/settingDesc.md +66 -0
  96. package/docs/components/skeleton.md +105 -0
  97. package/docs/components/skeletons.md +323 -0
  98. package/docs/components/slider.md +157 -0
  99. package/docs/components/steps.md +189 -0
  100. package/docs/components/sticky.md +76 -0
  101. package/docs/components/subsection.md +183 -0
  102. package/docs/components/swipeAction.md +279 -0
  103. package/docs/components/swiper.md +352 -0
  104. package/docs/components/switch.md +216 -0
  105. package/docs/components/tabbar.md +263 -0
  106. package/docs/components/table.md +5 -0
  107. package/docs/components/tabs.md +364 -0
  108. package/docs/components/tag.md +227 -0
  109. package/docs/components/testPic.md +20 -0
  110. package/docs/components/text.md +157 -0
  111. package/docs/components/textarea.md +121 -0
  112. package/docs/components/toast.md +124 -0
  113. package/docs/components/tooltip.md +98 -0
  114. package/docs/components/transition.md +404 -0
  115. package/docs/components/upload.md +253 -0
  116. package/docs/components/vtabs.md +332 -0
  117. package/docs/components/vueUse.md +45 -0
  118. package/docs/components/vuexDetail.md +103 -0
  119. package/docs/components/waterfall.md +651 -0
  120. package/docs/faq/index.md +53 -0
  121. package/docs/guide/codeHint.md +44 -0
  122. package/docs/guide/customIcon.md +168 -0
  123. package/docs/guide/demo.md +92 -0
  124. package/docs/guide/design.md +56 -0
  125. package/docs/guide/globalVariable.md +239 -0
  126. package/docs/guide/i18n.md +194 -0
  127. package/docs/guide/index.md +28 -0
  128. package/docs/guide/note.md +74 -0
  129. package/docs/guide/safeAreaInset.md +64 -0
  130. package/docs/guide/theme.md +67 -0
  131. package/docs/index.md +88 -0
  132. package/libs/config/config.js +0 -10
  133. package/libs/css/color.scss +15 -14
  134. package/package.json +7 -2
  135. package/theme.scss +2 -1
@@ -0,0 +1,140 @@
1
+ ## CountTo 数字滚动 <to-api/>
2
+
3
+ <demo-model url="/pages/componentsD/countTo/countTo"></demo-model>
4
+
5
+ ::: tip ✈
6
+
7
+ **组件名:uv-count-to**
8
+
9
+ [点击下载&安装](https://ext.dcloud.net.cn/plugin?name=uv-count-to)
10
+
11
+ :::
12
+
13
+ 该组件一般用于需要滚动数字到某一个值的场景,目标要求是一个递增的值。
14
+
15
+ ::: warning 注意
16
+ 如果给组件的父元素设置`text-align: center`想让数字水平居中,可能是由于元素内容快速变化而导致渲染的问题,在APP上组件可能会有轻微的左右抖动现象,
17
+ 解决办法是给父元素设置`padding-left`或者`margin-left`即可。
18
+ :::
19
+
20
+ ### 平台兼容性
21
+
22
+ |App(vue)|App(nvue)|H5|小程序|VUE2|VUE3|
23
+ |:-:|:-:|:-:|:-:|:-:|:-:|
24
+ |√|√|√|√|√|√|
25
+
26
+ ### 基本使用
27
+
28
+ 通过`startVal`设置开始值,`endVal`设置结束值
29
+
30
+ ```vue
31
+ <uv-count-to :startVal="30" :endVal="500"></uv-count-to>
32
+ ```
33
+
34
+ ### 设置滚动相关参数
35
+
36
+ - 通过`duration`设置从开始值到结束值整个滚动过程所需的时间,单位`ms`
37
+ - 通过`useEasing`设置滚动快结尾的时候,是否放慢滚动的速度,给用户更好的视觉效果,默认`true`
38
+
39
+ ```vue
40
+ <uv-count-to :start-val="30" :end-val="500" :duration="2000" :useEasing="false"></uv-count-to>
41
+ ```
42
+
43
+ ### 是否显示小数位
44
+
45
+ - 通过`decimals`设置显示的小数位,如果设置了,在滚动过程中,小数位会一起变化。
46
+ - 通过`decimal`设置小数位分割符号。
47
+ - 如果`startVal`和`endVal`是带小数的,应该设置`decimals`为`startVal`和`endVal`一样的小数位数值,如`endVal`为500.55,那么`decimals`应该设置为2。
48
+
49
+ ```vue
50
+ <uv-count-to :startVal="30" :endVal="500.55" :decimals="2" decimal="."></uv-count-to>
51
+ ```
52
+
53
+ ### 千分位分隔符
54
+
55
+ 通过`separator`配置千分位分隔符,默认为空字符串,可以设置英文逗号",",此参数表现为`endVal`值超过1000时,比如为"1542",那么滚动后会变成"1,542",在金额数值时,
56
+ 该参数可能会用上。
57
+
58
+ ```vue
59
+ <uv-count-to :endVal="1542" separator=","></uv-count-to>
60
+ ```
61
+
62
+ ### 滚动执行的时机
63
+
64
+ 可以通过`autoplay`设置是否需要初始化时就开始滚动,默认为`true`。如果设置为`false`,可以通过组件的`ref`去控制组件内部的`start()`和`stop()`或`restart()`
65
+ 方法来开始或暂停。
66
+
67
+ ```vue
68
+ <template>
69
+ <view>
70
+ <uv-count-to ref="countTo" :endVal="5000.55" :autoplay="false"></uv-count-to>
71
+ <button type="primary" size="small" @click="stop">暂停</button>
72
+ <button type="primary" size="small" @click="start">开始</button>
73
+ <button type="primary" size="small" @click="restart">继续</button>
74
+ </view>
75
+ </template>
76
+ <script setup>
77
+ import { ref } from 'vue';
78
+
79
+ const countTo = ref(null);
80
+ function start() {
81
+ countTo.value.start();
82
+ }
83
+ function stop() {
84
+ countTo.value.stop();
85
+ }
86
+ function restart() {
87
+ countTo.value.restart();
88
+ }
89
+
90
+ </script>
91
+ ```
92
+ ::: tip 完整示例下载地址
93
+
94
+ [https://ext.dcloud.net.cn/plugin?name=uv-ui](https://ext.dcloud.net.cn/plugin?name=uv-ui)
95
+
96
+ :::
97
+
98
+ ### API
99
+ ---
100
+
101
+ ### CountTo Props
102
+
103
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
104
+ |:- |:- |:- |:- |:- |
105
+ | startVal | 开始值 | String &#124; Number | 0 | - |
106
+ | endVal | 结束值 | String &#124; Number | 0 | - |
107
+ | duration | 滚动过程所需的时间,单位ms | String &#124; Number | 2000 | - |
108
+ | autoplay | 是否自动开始滚动 | Boolean | true | true &#124; false |
109
+ | decimals | 要显示的小数位数,见上方[是否显示小数位](/components/countTo.html#是否显示小数位) | String &#124; Number | 0 | - |
110
+ | decimal | 小数位分割符号 | String | . | - |
111
+ | useEasing | 滚动结束时,是否缓动结尾,见上方[设置滚动相关参数](/components/countTo.html#设置滚动相关参数) | Boolean | true | true &#124; false |
112
+ | color | 字体颜色 | String | #606266 | - |
113
+ | fontSize | 字体大小,单位默认px | String &#124; Number | 22 | - |
114
+ | bold | 字体是否加粗 | Boolean | false | true &#124; false |
115
+ | separator | 千位分隔符,见上方[千分位分隔符](/components/countTo.html#千分位分隔符) | String | - | - |
116
+ | customStyle | 自定义外部样式 | Object | - | - |
117
+
118
+
119
+ ### CountTo Methods
120
+
121
+ 此方法如要通过ref手动调用
122
+
123
+ | 名称 | 说明 |
124
+ |:- |:- |
125
+ | start |`autoplay`为`false`时,通过此方法启动滚动,调用即从头开始滚动 |
126
+ | restart | 暂定状态,从暂停状态开始滚动;或者滚动状态下,暂停 |
127
+ | stop | 暂停滚动 |
128
+
129
+
130
+ ### CountTo Events
131
+
132
+ |事件名 |说明 |回调参数 |
133
+ |:- |:- |:- |
134
+ | @end | 数值滚动到目标值时触发 | - |
135
+
136
+ <style scoped>
137
+ h3[id=countto-methods] + p + table thead tr th:nth-child(2){
138
+ width: 70%;
139
+ }
140
+ </style>
@@ -0,0 +1,283 @@
1
+ ## DatetimePicker 时间选择器 <to-api/>
2
+
3
+ <demo-model url="/pages/componentsB/datetimePicker/datetimePicker"></demo-model>
4
+
5
+ ::: tip ✈
6
+
7
+ **组件名:uv-datetime-picker**
8
+
9
+ [点击下载&安装](https://ext.dcloud.net.cn/plugin?name=uv-datetime-picker)
10
+
11
+ :::
12
+
13
+ 此选择器用于时间日期
14
+
15
+ ### 平台兼容性
16
+
17
+ |App(vue)|App(nvue)|H5|小程序|VUE2|VUE3|
18
+ |:-:|:-:|:-:|:-:|:-:|:-:|
19
+ |√|√|√|√|√|√|
20
+
21
+ :::warning 注意事项
22
+ > 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
23
+ 1. 本组件统一返回时间戳,如果需要格式化时间,可以自行转换。推荐使用 `uv-ui` 提供的API进行处理:[Time时间格式化](https://www.uvui.cn/api/api/utils/time.html)
24
+ 2. `mode="time"`时传入的应该是一个 String ,如: 12:00 ,而不是 Number(new Date())
25
+ 3. 如果某些平台formatter参数不生效,可能就是不支持参数传递方法,可以使用setFormatter()进行设置
26
+ :::
27
+
28
+ ### 基本使用
29
+
30
+ - 通过`ref`调用`open()`控制组件的打开。
31
+ - 通过`mode`配置选择何种日期格式。
32
+
33
+ ```vue
34
+ <template>
35
+ <view>
36
+ <uv-datetime-picker ref="datetimePicker" v-model="value" mode="datetime" @confirm="confirm">
37
+ </uv-datetime-picker>
38
+ <button @click="open">打开</button>
39
+ </view>
40
+ </template>
41
+ <script setup>
42
+ import { ref } from "vue";
43
+ const value = ref(Number(new Date()));
44
+ const datetimePicker = ref(null);
45
+ function open() {
46
+ datetimePicker.value.open();
47
+ }
48
+ function confirm(e) {
49
+ console.log('confirm', e);
50
+ }
51
+
52
+ </script>
53
+ ```
54
+
55
+ ### 年 月 日
56
+
57
+ 此模式通过`mode`设置为`date`。
58
+
59
+ ```vue
60
+ <template>
61
+ <view>
62
+ <uv-datetime-picker ref="datetimePicker" v-model="value" mode="date" @confirm="confirm">
63
+ </uv-datetime-picker>
64
+ <button @click="open">打开</button>
65
+ </view>
66
+ </template>
67
+ <script setup>
68
+ import { ref } from "vue";
69
+ const value = ref(Number(new Date()));
70
+ const datetimePicker = ref(null);
71
+ function open() {
72
+ datetimePicker.value.open();
73
+ }
74
+ function confirm(e) {
75
+ console.log('confirm', e);
76
+ }
77
+
78
+ </script>
79
+ ```
80
+
81
+ ### 过滤器
82
+
83
+ 使用过滤器`filter`进项处理时间,下方示例是保留偶数年。
84
+
85
+ ```vue
86
+ <template>
87
+ <view>
88
+ <uv-datetime-picker
89
+ ref="datetimePicker"
90
+ v-model="value"
91
+ mode="date"
92
+ :filter="filter"
93
+ @confirm="confirm">
94
+ </uv-datetime-picker>
95
+ <button @click="open">打开</button>
96
+ </view>
97
+ </template>
98
+ <script setup>
99
+ import { ref } from "vue";
100
+ const value = ref(Number(new Date()));
101
+ const datetimePicker = ref(null);
102
+ function open() {
103
+ datetimePicker.value.open();
104
+ }
105
+ function confirm(e) {
106
+ console.log('confirm', e);
107
+ }
108
+ function filter(type, options) {
109
+ if (type === 'year') {
110
+ return options.filter(option => option % 2 === 0);
111
+ }
112
+ return options;
113
+ }
114
+
115
+ </script>
116
+ ```
117
+
118
+ ### 格式化
119
+
120
+ 如有需要,可以通过`formatter`参数编写自定义格式化规则。
121
+
122
+ ```vue
123
+ <template>
124
+ <view>
125
+ <uv-datetime-picker
126
+ ref="datetimePicker"
127
+ v-model="value"
128
+ mode="datetime"
129
+ :formatter="formatter"
130
+ @confirm="confirm">
131
+ </uv-datetime-picker>
132
+ <button @click="open">打开</button>
133
+ </view>
134
+ </template>
135
+ <script setup>
136
+ import { ref } from "vue";
137
+ const value = ref(Number(new Date()));
138
+ const datetimePicker = ref(null);
139
+ function open() {
140
+ datetimePicker.value.open();
141
+ }
142
+ function confirm(e) {
143
+ console.log('confirm', e);
144
+ }
145
+ function formatter(type, value) {
146
+ if (type === 'year') {
147
+ return `${value}年`;
148
+ }
149
+ if (type === 'month') {
150
+ return `${value}月`;
151
+ }
152
+ if (type === 'day') {
153
+ return `${value}日`;
154
+ }
155
+ return value;
156
+ }
157
+
158
+ </script>
159
+ ```
160
+
161
+ ::: warning 注意:
162
+
163
+ 某些平台可能不支持props传递函数,为了兼容性内置有方法,可以通过`setFormatter`方法设置规则。如下:
164
+ ```vue
165
+ onReady() {
166
+ //onReady 为uni-app支持的生命周期之一
167
+ datetimePicker.value?.setFormatter(formatter)
168
+ }
169
+ ```
170
+ :::
171
+
172
+ ### 限制最大最小值
173
+
174
+ 参数`minDate`和`maxDate`可以设置最大值和最小值(传入时间戳)。
175
+
176
+ ```vue
177
+ <template>
178
+ <view>
179
+ <uv-datetime-picker
180
+ ref="datetimePicker"
181
+ v-model="value"
182
+ mode="datetime"
183
+ :minDate="1587524800000"
184
+ :maxDate="1786778555000"
185
+ @confirm="confirm">
186
+ </uv-datetime-picker>
187
+ <button @click="open">打开</button>
188
+ </view>
189
+ </template>
190
+ <script setup>
191
+ import { ref } from "vue";
192
+ const value = ref(Number(new Date()));
193
+ const datetimePicker = ref(null);
194
+ function open() {
195
+ datetimePicker.value.open();
196
+ }
197
+ function confirm(e) {
198
+ console.log('confirm', e);
199
+ }
200
+
201
+ </script>
202
+ ```
203
+
204
+ ### 完整示例
205
+
206
+ ::: tip 完整示例下载地址
207
+
208
+ [https://ext.dcloud.net.cn/plugin?name=uv-ui](https://ext.dcloud.net.cn/plugin?name=uv-ui)
209
+
210
+ :::
211
+
212
+ ### API
213
+ ---
214
+
215
+ ### DatetimePicker Props
216
+ | 参数 | 说明 | 类型 | 默认值 | 可选值 |
217
+ |:- |:- |:- |:- |:- |
218
+ | value / v-model | 绑定值 | String &#124; Number | - | - |
219
+ | showToolbar | 是否显示顶部的操作栏 | Boolean | true | true &#124; false |
220
+ | title | 顶部标题 | String | - | - |
221
+ | round `1.0.12` | 弹窗圆角 | String &#124; Number | 0 | - |
222
+ | mode | 展示格式,见[Mode Options](/components/datetimePicker.html#mode-options) | String | datetime | datetime &#124; date &#124; time &#124; year-month &#124; year |
223
+ | clearDate | 是否清空上次选择 | Boolean | false| true &#124; false |
224
+ | maxDate | 可选的最大时间(时间戳毫秒) | Number | 最大默认值为后10年 | - |
225
+ | minDate | 可选的最小时间(时间戳毫秒) | Number | 最小默认值为前10年 | - |
226
+ | minHour | 可选的最小小时,仅mode=time有效 | Number | 0 | - |
227
+ | maxHour | 可选的最大小时,仅mode=time有效 | Number | 23 | - |
228
+ | minMinute | 可选的最小分钟,仅mode=time有效 | Number | 0 | - |
229
+ | maxMinute | 可选的最大分钟,仅mode=time有效 | Number | 59 | - |
230
+ | filter | 选项过滤函数,上方示例有具体用法 | Function | null | - |
231
+ | formatter | 输入过滤或格式化函数(如需兼容微信小程序,则只能通过`setFormatter`方法),上方示例有具体用法 | Function | null | - |
232
+ | loading | 是否显示加载中状态 | Boolean | false | true &#124; false |
233
+ | itemHeight | 各列中,单个选项的高度 | String &#124; Number | 44 | - |
234
+ | cancelText | 取消按钮的文字 | String | 取消 | - |
235
+ | confirmText | 确认按钮的文字 | String | 确认 | - |
236
+ | cancelColor | 取消按钮的颜色 | String | #909193 | - |
237
+ | confirmColor | 确认按钮的颜色 | String | #3c9cff | - |
238
+ | visibleItemCount | 每列中可见选项的数量 | String &#124; Number | 5 | - |
239
+ | closeOnClickOverlay | 是否允许点击遮罩关闭时间选择器 | Boolean | true | true &#124; false |
240
+ | closeOnClickConfirm | 是否允许点击确认关闭时间选择器 | Boolean | true | true &#124; false |
241
+
242
+ ### Mode Options
243
+ | 属性名 | 说明 |
244
+ | :- | :- |
245
+ | datetime | 年月日时分选择 |
246
+ | date | 年月日选择 |
247
+ | time | 时分选择,`mode="time"`时`value`的格式应该类似`00:00` |
248
+ | year-month | 年月选择 |
249
+ | year | 年选择 |
250
+
251
+ ### DatetimePicker Methods
252
+ | 方法名 | 说明 |
253
+ | :- | :- |
254
+ | open | 弹出时间选择器组件 | -|
255
+ | setFormatter | 格式化函数,见上方示例 |
256
+
257
+ ### DatetimePicker Events
258
+ |事件名 |说明 |回调参数 |
259
+ |:- |:- |:- |
260
+ | @confirm | 点击确定按钮时触发 | value:返回所选时间戳,mode:当前模式 |
261
+ | @change | 当选择值变化时触发 | value:返回所选时间戳,mode:当前模式 |
262
+ | @cancel | 点击取消按钮 | - |
263
+ | @close | 关闭遮罩时触发 | - |
264
+
265
+ :::warning 注意
266
+ 示例依赖了 `uv-picker` `uv-ui` 等多个组件,直接拷贝示例代码将无法正常运行。
267
+ 请到 [组件下载页面](https://ext.dcloud.net.cn/plugin?name=uv-datetime-picker) ,在页面右侧选择 使用 `HBuilderX导入示例项目` 。
268
+ :::
269
+
270
+ <style scoped>
271
+ h3[id=mode-options] + table thead tr th:nth-child(2) {
272
+ width: 70%;
273
+ }
274
+ h3[id=datetimepicker-methods] + table thead tr th:nth-child(2) {
275
+ width: 70%;
276
+ }
277
+ h3[id=mode-options] + table {
278
+ width: auto;
279
+ }
280
+ h3[id=mode-options] + table thead tr th:nth-child(2){
281
+ width: 60%;
282
+ }
283
+ </style>
@@ -0,0 +1,190 @@
1
+ ## 对比1.X
2
+
3
+ uv-ui1.0与uv-ui1.x之间,是有非常大差异的,`1.x`不能升级到`2.x`版本。
4
+ 造成这个问题的根本原因是,`2.x`是一个重构版本,对`1.x`进行了整个架构的改造升级,摒弃了`1.x`中一些不合理的理念和做法,同时引入很多优秀的新特性,让`2.0`更加
5
+ 健壮和稳定。
6
+ 下面列出一些`1.x`与`2.x`的差异,让您能更好的对`2.x`有整体的认识,了解该使用哪个版本,以及是否值得升级到`2.0`版本。
7
+
8
+ #### 1. 对nvue的支持
9
+
10
+ 众所周知,`1.x`是不支持`nvue`的,所以`2.x`立项的首要目标就是对`nvue`的兼容,目前uv-ui1.0也全面实现了兼容`nvue`。
11
+ 我们也知道,`nvue`的背后其实是`weex`,在渲染上有出色的效果,但是其也有很多无法填平的兼容问题,导致某些情况下费尽心思依然无法实现理想的效果。
12
+
13
+
14
+ #### 2. form表单校验的加强
15
+
16
+ 在`1.x`中,`prop`参数不支持`a.b.c`的写法,`2.x`实现了支持,同时对`form`组件引入了`validateField、resetFields、clearValidate`等方法,从各个方面对表单功能
17
+ 进行了加强,让您在移动端依然能对表单校验游刃有余。
18
+
19
+
20
+ #### 3. 优化popup弹窗组件
21
+
22
+ 在`2.x`中,我们对弹窗进行了优化,有如下:
23
+ - 修复了`1.x`中快速切换可能会卡死;
24
+ - 移除了内置的`scroll-view`组件,让`popup`内的内容可以超出边界;
25
+ - 优化弹窗的响应速度
26
+ - 处理了由于uni-app的问题,导致微信小程序内,弹窗内无法准确获取元素尺寸而导致某些内嵌组件失效的问题;
27
+ - 提供一个`bgColor`参数,设置为`transparent`可以方便去掉背景色,实现个性化的中部弹窗;
28
+
29
+
30
+ #### 4. 提供通用性的customStyle参数
31
+
32
+ 我们为每个组件都提供了一个`customStyle`,一般作用于组件内部的根节点,可以方便设置一些基础样式,它同时能接受对象或者字符串的样式形式,如下:
33
+
34
+ ```js
35
+ // 对象形式
36
+ <uv-badge :customStyle="{backgroundColor: 'red'}"></uv-badge>
37
+
38
+ // 字符串形式
39
+ <uv-badge customStyle="background-color: red;"></uv-badge>
40
+ ```
41
+
42
+
43
+ #### 5. 优化在微信小程序上的差异
44
+
45
+ 微信小程序中,默认情况下,自定义组件本身的那个节点是一个“普通”的节点,使用时可以在这个节点上设置`class style 、动画、 flex`布局等,但是在复杂的
46
+ 布局下,这可能会导致我们无法控制组件的整体布局,所以在`2.x`中,我们统一将所有组件设置为“虚拟的”,让其能更好的按我们的预期进行工作。
47
+
48
+ ```js
49
+ // #ifdef MP-WEIXIN
50
+ // 将自定义节点设置成虚拟的,更加接近Vue组件的表现,能更好的使用flex属性
51
+ options: {
52
+ virtualHost: true
53
+ }
54
+ // #endif
55
+ ```
56
+
57
+
58
+ #### 6. 加强calendar日历组件
59
+
60
+ 在`2.x`中,我们加入了多个控制参数,让您能够对日历进行各个方面进行细致的操作,如通过`formatter`参数,可以自定义日历提示语,角标等;允许控制日期最大和最小范围;
61
+ 可以通过滚动的形式,同时展示多个月份;总之,相比`1.x`,我们从每个方面进行了细致的考虑,并提供了对应的处理方法。
62
+
63
+
64
+ #### 7. picker组件的调整
65
+
66
+ 在`1.x`中,我们提供了`picker`和`select`组件,这些组件存在一些不足与混乱,同时可能无法配置出我们想要的场景,在`2.x`中,我们对此进行了梳理,拆分为典型的`picker`组件,
67
+ 用于普通的非时间类型选择,同时提供`datetime-picker`组件,用于专门的时间选择,并针对时间的格式化,最小和最大时间等方面,提供了多样化的控制参数。
68
+
69
+
70
+ #### 8. 加强numberBox组件
71
+
72
+ 在`1.x`上,由于历史原因,此组件存在更新值时可能会有异常的问题。在`2.x`中,我们对此组件进行了重构和加强,加入异步控制,以及样式完全自定义的特性,让它能适用于
73
+ 任何您需要它的场景。
74
+
75
+
76
+ #### 9. 优化upload组件
77
+
78
+ 在`1.x`中,我们将上传的核心功能集成在组件内,导致在某些特殊返回状态,以及有前端直传`oss`时,可能会操作不方便的问题。
79
+ 所以,在`2.x`中,我们重构了此组件,此后,组件内部只提供图片(新增了视频和文件类型)的选择与展示,将上传的步骤交由外部用户自定义的逻辑进行操作,实现更好的解耦。
80
+
81
+
82
+ #### 10. 优化radio和checkbox组件
83
+
84
+ 在`1.x`中,我们没法控制这两个组件的排列形式,所以在`2.x`中,我们提供了一个`placement`参数,可以对调图片与文本的位置,用于在特殊场景的布局,同时我们在组件内部进行了
85
+ 特殊处理,让他们能更好的配合`form`组件进行表单校验。
86
+
87
+
88
+ #### 11. switch组件细节优化
89
+
90
+ 在`1.x`中,该组件能够满足正常使用,在`2.x`中,我们对它进行优化,比如加入更好的`loading`效果、切换动画、以及提供`space`参数让您配置出另一种风格的样式。
91
+
92
+
93
+ #### 12. 优化countDown倒计时组件
94
+
95
+ 在`2.x`中,我们对此组件进行如下优化:
96
+
97
+ - 加入毫秒级的功能
98
+ - 提供完全自定义的样式配置,让它能适用于任何场景。
99
+
100
+
101
+ #### 13. 优化swipeAction滑动单元格组件
102
+
103
+ 在`2.x`中,我们针对不同的平台,采用不同的方案去实现此组件的效果,在`nvue`上,我们采用了`BindingX`方案,在APP和微信小程序,H5上,我们采用了`wxs`的方案,
104
+ 这些优化 ,能让我们滑动单元格时,有丝滑和细腻的效果。
105
+
106
+
107
+ #### 14. 组件内部获取尺寸时机的优化
108
+
109
+ 在`1.x`中,普遍的做法是在组件初始化完成后获取内部元素的尺寸,这导致在内容变化而导致尺寸变化后,可能导致不准确,或者需要通过调用组件的方法重新进行初始化。
110
+ 而在`2.x`中,我们对此进行了反思,采用的方法为每次需要进行操作的时候,重新获取元素的尺寸,典型的为`collapse`折叠面板组件,在每次打开的时候,组件都会重新
111
+ 计算该展示的高度。
112
+
113
+
114
+ #### 15. 父子嵌套组件调用的优化
115
+
116
+ 在uv-ui中,有很多组件都采用父子嵌套的做法,比如`radio`组件,就由`uv-radio-group`和`uv-radio`组件,`1.x`中对类似的组件采用了统一的处理方法,该方法存在一定的缺陷,
117
+ 导致反复操作一些子组件时,重复加入一些实例到管理状态中,从而导致卡顿或者混乱。在`2.x`中,我们对类似的问题进行了优化,保证了状态的正确性,以及在组件被卸载的时候,进行移除。
118
+
119
+
120
+ #### 16. 骨架屏组件重构
121
+
122
+ 在`1.x`中,我们需要给骨架屏组件提供类名,以及初始的模拟数据,让组件内部进行尺寸获取以及在对应的位置绘制占位图,在便捷性的同时,舍弃了可控性。
123
+ 所以,在`2.x`中,我们采用了另一种实现方式,让用户可以通过参数的形式,配置出想要的占位图信息,可以获得更强的自定义性。
124
+
125
+
126
+ #### 17. 加强http请求
127
+
128
+ 在`1.x`中,我们提供了基本可用的`http`支持,它也存在一些缺陷,比如不支持`upload、download`,其他各项配置不够细化等。
129
+ 在`2.x`中,我们引入更专业的`luch-request`插件,它能全面的支持一个企业应用在各种复杂场景下的请求配置需求,我们对此插件进行了进一步的封装,并提供了详细实践用例,
130
+ 您可以在[Http请求](https://www.uvui.cn/api/request/http.html)章节中查阅更多关于它的用法。
131
+
132
+
133
+ #### 18. 提供全局性的组件默认参数配置
134
+
135
+ 我们知道,每个组件都有很多的`props`参数,在调用组件的时候,通过修改对应的参数,可以覆盖组件的默认值。但是在对于某个常用的组件来说,如果组件的某个参数
136
+ 默认值不符合自己的需求,就需要在每次调用的时候,都去覆盖它。
137
+ 在`2.x`中,我们对此提供了一个解决方案,假设`uv-text`的`color`为`#333333`,而您应用的默认色值为`#555555`,就需要每次使用`uv-text`组件时,都去修改它,如下:
138
+
139
+ ```html
140
+ <!-- 列表页 -->
141
+ <uv-text color="#555555" text="列表内容"></uv-text>
142
+
143
+ <!-- 详情页 -->
144
+ <uv-text color="#555555" text="详情内容"></uv-text>
145
+ ```
146
+
147
+ 在`2.x`中,我们可以通过`uni.$uv.props.组件名.参数名`的形去对组件的某个默认参数进行全局覆盖,比如我们我要修改`uv-text`组件`color`参数:
148
+
149
+ ```js
150
+ // 建议在main.js中(初始化uv-ui之后)引入外部配置文件中进行统一处理
151
+ uni.$uv.props.text.color = '#555555'
152
+ ```
153
+
154
+ 在进行如上设置后,整个应用中,任意调用`uv-text`的地方,`color`参数的默认值都成为了`#555555`。
155
+
156
+
157
+ #### 19. 优化demo演示效果,以及移除了模板和js的模块
158
+
159
+ 为了让组件库更加专注和简洁,我们在演示demo中,移除了`1.x`中关于`模板`和`js`的模块,同时优化了组件的演示效果,不再使用`1.x`切换按钮的形式去动态切换效果,
160
+ 而是提供更直观的形式对组件的重要效果进行罗列演示。
161
+ 同时,在官网中,我们也移除了`模板`模块。
162
+
163
+
164
+ #### 20. 加强tag组件
165
+
166
+ 在`2.x`中,我们对`tag`组件进行了加强,相较`1.x`,它具有如下优势:
167
+
168
+ - 可以配置关闭功能
169
+ - 可以配置图标
170
+ - 可以适用于进行多选和单选的场景
171
+
172
+
173
+ #### 21. 加强swiper轮播图组件
174
+
175
+ 在`2.x`中,我们对`swiper`组件进行了加强,让它可以配置出更加灵活的指示器样式,同时加入加载中的状态,以及可以嵌入视频播放的特性。
176
+
177
+
178
+ #### 22. 优化sticky吸顶组件
179
+
180
+ 在`1.x`中,我们采用的是监听元素状态的形式,通过`js`方案进行吸顶,但是随着时代的进步以及设备的升级,大部分设备以及某些平台已经实现了对`css sticky`支持,
181
+ 所以在`2.x`中,我们采用了两种方案,在各个平台,比如`nvue, App, Ios,Android,微信小程序,H5`等,通过各种手段,去判断当前平台或者设备是否支持`css sticky`,
182
+ 如果支持则优先使用`css`方案以获得更细腻的效果。如果不支持`css`方案,则自动降级为`js`方案。
183
+
184
+
185
+ #### 23. 优化tabs组件
186
+
187
+ 在`1.x`,可能会存在动态增减菜单下,底部滑块位置可能会错乱的问题,得益于`2.x`的整体架构调整,我们在每次移动滑块时,都会重新获取菜单的尺寸,再进行移动,保证了滑块
188
+ 能准确移动到如期的位置。同时,我们对此组件还进行其他细节优化,比如可以禁用某个菜单,显示角标,可以配合`uv-sticky`进行吸顶等。
189
+
190
+