- 请问小程序审核中的运行环境是开发版,正式版还是体验版?
背景: 小程序通过__wxConfig.envVersion可以获取到小程序当前的运行环境,分为【release线上版本、trial体验版、develop开发版】。因为业务需要,我们不同版本分别访问不同的后台,然后根据这个做了请求前缀域名的区分。 遇到的问题: 今天多次提交小程序审核后,一直审核不通过,只是反馈提示请求失败,然后提交了一个新的版本,在请求失败时将小程序运行环境等信息给抛出来,才发现,小程序审核人员在审核的时候小程序的环境竟然是开发版???? [图片][图片] 想问一下,为什么小程序审核人员在审核我们的小程序的时候,竟然是develop的开发环境?同样的代码,只是改了部分样式,年前提交没问题,然后年后回来,提交审核的时候出了问题,一直找不到原因,后来在请求失败时将小程序运行环境等信息给抛出来,才发现,小程序审核人员在审核的时候小程序的环境竟然是开发版???? 我们根据__wxConfig.envVersion获取到小程序当前的运行环境并进行区分,不就是为了区分各种环境吗?不就是为了让审核人员和审核通过并上线后的用户访问线上环境,而开发和测试人员访问不同的测试环境吗?审核人员按说在审核的时候小程序的环境不应该跟发布后的版本一致,这样才有审核的意义吗?如果审核人员在审核的时候竟然是develop开发环境,那我们根据这个进行小程序运行环境的区分还有什么意义? 另外,小程序审核人员审核时小程序的运行环境,是不是也应该公布一下,让我们清楚是什么环境然后针对性处理呢?还是说小程序审核人员审核时小程序的运行环境也并不一定是develop开发环境?
2021-02-20 - antv F2现在体积这么大了吗?都超过1M了
[图片] 按照antv F2的微信小程序使用步骤安装,安装并构建npm之后发现在miniprogram_npm中多了4个包,如下图 [图片] BUT,这四个包在检查依赖的时候,发现竟然没被使用,那特喵的干嘛要给我安装这四个包?我的package.json中也没这四个包的依赖啊 [图片] 这不是重点,重点是,竟然发现现在antv F2的微信小程序版本,现在都特喵的超过1M了,主包总共才2M啊!倒是可以使用分包,但是有些分包公共资源还是得放在主包啊,而且主包还有自己的一些页面啊! 有没有大神有什么好办法?
2021-02-03 - input组件的type动态切换键盘类型在某些IOS手机上无效?
input组件的type根据不同类型调用不同键盘时,在某些IOS上无效,比如默认type是text,当类型改变时type切换为number,此时拉起的键盘类型还是text,而不是number。请问是如何引起的? 如下图,当前为机械备案登录时input组件的type为text,当为进出场登记时input组件的type为number,但在切换两种登录类型时,键盘类型却并没有进行 切换。分别用了两台IOS手机进行测试,一台为IOS12.4.5(前三张图,第三张图为相关环境),另一台为IOS13.3.1(后三张图,最后一张图为相关环境)。 [图片][图片][图片] [图片][图片][图片] 页面代码: <view class='ticket_container'> <!-- 标题 --> <view class='title'> <view class="{{index == loginType ? 'title-sel-selected' : 'title-sel'}}" wx:for='{{loginTypeList}}' wx:key='loginType' bindtap='titleClick' data-idx='{{index}}'>{{item.name}}</view> </view> <!--内容--> <view class="loginForm"> <view class='formItem'> <input bindinput="fieldChange" value='{{username}}' data-field='username' type="{{loginType==0?'text':'number'}}" maxlength="18" placeholder="{{loginTypeList[loginType].placeholder}}" placeholder-style="color:#C8C8C8" /> </view> <view class='formItem'> <input password value='{{password}}' data-field='password' bindinput="fieldChange" maxlength="20" placeholder="请输入密码" placeholder-style="color:#C8C8C8" /> </view> <view class='registerClass'> <view></view> <view bindtap="toRegister">注册账号</view> </view> <view class="commonForm"> <view class="formBtns"> <view class='form_button {{loading||!(username&&password)?"form_buttonDisabled": ""}}'> <button bindtap="confirmLogin" loading='{{loading}}' disabled='{{loading||!(username&&password)}}'>立即登录</button> </view> </view> </view> </view> </view> JS代码: data: { loginType: 0, // 登录类型,0机械备案,1进出场登记 loginTypeList: [ { name: '机械备案', placeholder: '请输入统一社会信用代码/个人身份证号' }, { name: '进出场登记', placeholder: '请输入工地编号' }, ], //登录类型列表 loginName: '', // 登录名 password: '', // 密码 loading: false // 请求状态 }, //用户点击tab时调用 titleClick: function (e) { const {loginType} = this.data const tapIndex = +e.currentTarget.dataset.idx // 只有当前下标与点击下标不同时才清空数据 tapIndex !== loginType && this.setData({ //拿到当前索引并动态改变 loginType: tapIndex, username: '', password: '' }) }, // 字段输入 fieldChange(e) { // 获取绑定的字段名 const { field } = e.currentTarget.dataset // 获取输入的值 const { value } = e.detail // 如果是统一社会信用代码/个人身份证,则先把字母都转换为大写 const fieldValue = field === 'username' ? value.toUpperCase() : value this.setData({ // 当字段值为String字符串类型时进行前后空格的去除 [field]: typeof (fieldValue) === 'string' ? fieldValue.trim() : fieldValue }) },
2020-05-07 - 小程序调用wx.chooseImage进行多张图片选择时出现编号紊乱重复的BUG
说明:我们的测试人员已稳定复现该BUG多次。 小程序调用wx.chooseImage进行多张图片选择时(9张为例),如果选择先选择了9张,然后再取消前8张中的一张,前8张的编号正确变动为1-7,但是之前的第9张编号还是9,然后再选择一张,最新选择的这张编号也是9。BUG截图及操作视频如下: BUG截图: [图片] 复现BUG视频: [视频]
2020-02-25 - 吐槽小程序异步API接口调用方式
- 需求的场景描述(希望解决的问题) 小程序提供API接口大部分都是异步接口,但是有些接口又依赖于其他接口的调用结果,这就造成为了实现一个接口调用需求而进行多层代码嵌套,代码相当不美观,也不利于开发者维护。 例如:要获取当前连接的WiFi信息,则需要三个API的嵌套调用来实现获取WiFi信息,然后再与服务器进行交互: [代码]wx.getNetworkType({ [代码][代码]//获取当前网络类型[代码] [代码] [代码][代码]success(res) {[代码][代码] [代码][代码]const networkType = res.networkType[代码][代码] [代码][代码]if[代码] [代码](networkType === [代码][代码]'wifi'[代码][代码]) {[代码][代码]//判断是wifi环境[代码][代码] [代码][代码]wx.startWifi({ [代码][代码]//初始化WiFi[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.errMsg)[代码][代码] [代码][代码]wx.getConnectedWifi({ [代码][代码]//获取WiFi信息[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.errMsg)[代码][代码] [代码][代码]wx.request({ [代码][代码]//信息获取成功,与服务器进行交互[代码][代码] [代码][代码]url: [代码][代码]'test.php'[代码][代码], [代码][代码]//仅为示例,并非真实的接口地址[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]x: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]y: [代码][代码]''[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.data)[代码][代码] [代码][代码]//服务器返回成功后进行页面处理[代码][代码] [代码][代码]//TODO[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]})[代码] 以上代码除了繁琐不美观之外,还不利于维护 - 希望提供的能力 希望官方团队能将异步API实现可指定异步或同步,或者是将API封装成Promise对象,这样开发者可方便自由的通过Promise对象来模拟异步同步,还可以简化接口嵌套,简化代码,方便维护。 之所以希望官方团队将异步API封装成Promise对象而不是自己去封装,是基于良好的版本升级的考虑,如果是自己去封装,万一某次版本升级将某些API改变或者废弃,或者新增某些API,这对于开发者来说,去维护自己的封装也将是很大的开发成本。 既然小程序支持ES6的转码,那么,个人认为,如果官方团队能将所有的异步API升级为返回Promise对象,那将是对开发者相当友好的一件事,会增加开发者的热情和积极性,同时也更利于开发者维护代码。 - 补充: 其实我觉得学习promise的简单使用的成本并不是太高,尤其是跟多层嵌套调用、不利于维护等比起来,真心个人感觉这点学习成本很低。 当然,也不是没有解决办法, 比如可以通过在全局的app.js中增加一个配置项,用来指定是否全局开启异步API的promise调用方式,或者是在单个API中增加一个配置项,来指定当前API是使用原本的异步方式还是使用promise方式。 这只是个人建议,仅供参考。但我真心觉得异步API使用promise肯定会越来越成为更多开发者的呼唤和心声的!
2018-11-08