微信小程序开发中遇到的坑

欢欢欢欢 发表于 2018-11-13 15:48

开发文档:摸这里

坑一:在使用自定义组件的过程中使用了选项 addGlobalClass,在IDE里怎么都没用,但是在真机上运行就可以。

分析:

也许是padding,margin这些属性比较不好兼容吧

-------------------------------------------分---隔---线-----------------------------------------------------

坑二:在使用自定义组件中,如果要使用slot,就一定要加上multipleSlots属性。即便是使用一个slot也要。

-------------------------------------------分---隔---线-----------------------------------------------------

坑三:画布(Canvas)和h5原生画布有一个很重要的区别:所有的绘画,最后都要调用draw方法,否则是不会呈现在画布上的。

-------------------------------------------分---隔---线-----------------------------------------------------

坑四:iOS真机调试的时候,报错:request:fail 发生了 SSL 错误,无法建立与该服务器的安全连接。

解决过程:

测试了下,在安卓机上可以正常运行,基本定位是iOS问题。

百度说:2017年1月1日起,苹果强制所有 app 满足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。

苹果ATS检测:(摸这里) 该工具提供了一个检测域名是否符合标准的方法。将我的域名输入,果然提示了一个错误:服务器检测结果(未通过)不支持TLS1.2。也就是说证书没问题,是服务器配置问题。

接着百度 “支持TLS1.2”。找到一个配置TLS1.2的教程(摸这里)。配置完后,重启服务器,搞定。

-------------------------------------------分---隔---线-----------------------------------------------------

坑五:在map控件中,如果只使用cover-image,事件是会冒泡的,会先触发map事件,再触发cover-image事件。

解决方法:必须将cover-image放到cover-view里面,在cover-view中绑定事件,这样就不会冒泡了。

续坑五:真机中,cover-view中对于border的支持很不完整,不支持伪类:before、:after等;总之一句话,真机对cover-view整体的支持都非常不好,我佛了。

-------------------------------------------分---隔---线-----------------------------------------------------

坑六:获取用户信息必须手动触发,且按钮必须加上 open-type="getUserInfo";否则在手机上将无法正常运行。

坑七:涉及到请求服务器的操作,记得要第一时间配置合法域名。最坑的是开发时不需要合法域名,体验版需要,导致很难定位到问题,特别浪费时间。

坑八:防止事件冒泡,将bindtap改成catchtap;详细情况摸这里

坑九:button的默认样式中,border是通过伪元素:after来实现的;

坑十:公众号文章如果在小程序打开,又不能操作公众号的域名上传校验文件;记住:同主体关联的公众号文章不需要配置业务域名。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十一:客户端加密数据解密时报错:填充无效,无法被移除。如果这个bug100%发生,说明解密方法有问题。如果时好时坏,证明解密方法没问题,是你获取session_key的时机出了问题,它过期了。一定要先调用wx.login()再调用wx.getUserInfo()或者wx.getPhoneNumber()获取加密数据。如果是bindgetuserinfo或者bindgetphonenumber这类的事件,建议在onload时就调用wx.login(),将session_key缓存下来。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十二:使用scroll-view横向滚动时,单位元素由于内容要求高度不定,导致在手机上查看时出现错位现象,开发工具显示正常。

解决方案:在单位元素的样式上加上vertical-align属性。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十七:scroll-view在滚动到底部或者顶部的时候,bindscrolltoupper和bindscrolltolower是反复触发的,如果在这些事件里有复杂的逻辑处理应该使用setTimeout来减少时间发生的频次。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十八:scroll-view如果内容没有达到容器的滚动高度是不会触发bindscrolltoupper和bindscrolltolower的。如果要保持体验的一致,需要补足高度让内部高度超过容器高度。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十三:在申请小程序的时候,如果你有一个认证过的公众号,你可以在他的“小程序”菜单中“快速注册并认证小程序”,使用同一套资质,无须重复缴纳认证费用,只需要准备一个邮箱账号即可,方便快捷。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十四:组件和引用组件的页面不能使用 id 选择器(#a)、属性选择器([a])和标签名选择器,请改用 class 选择器。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十五:wxacode.getUnlimited接口中的属性page必须是小程序存在的页面(否则报错)。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十六:wx.showModal的参数cancelTextconfirmText长度不能超过4个字符,否则会弹出失败。

-------------------------------------------分---隔---线-----------------------------------------------------

坑十七:微信地理位置接口申请越来越严格了,遇到反复申请不下来的情况,不妨先发布一版代码,再来申请。

备案、认证是基本要求,同时,申请理由和图片等等尽量合理,和你的小程序的类目尽量一致。