微信小程序 填坑记录

本文由本人简书搬迁至此,并做小幅修改。

老板要让做个小程序,并且很着急。于是边学边干开始做微信小程序。

过程中遇到不少坑,前期时间太紧没有记录,后期凭记忆简单记一下,防止再次入坑。

1.开发工具中,本地资源文件名(文件夹路径未测)对大小写不敏感,拼错仍然能正确显示,但在真机上敏感,拼错不能显示

2.列表中播放动画时, 不能set使位置变化。 会导致动画停在第一个step结束。

3.小程序对以url方式下载的资源有缓存, 不能实时更新,暂时在url拼上resVersion方式解决,但部分机器(我的安卓)对MP3资源还是不会更新,怎么都没用。IOS没问题。

4.js的 Sort函数在某些IOS手机中无效,猜测和IOS版本有关.(IOS10.3.2、10.3.3有问题,11没问题)。解决办法:自己实现sort方法,不推荐快排,因为快排不是稳定排序,某些地方可能不适用。

5.js的浮点数计算不准确 17.74 * 100 结果为1773.999999999998。解决办法,重新实现浮点数的+-*/运算。

6.安卓中¥符号为1横杠, IOS为两横杠, 导致以此命名的资源显示不出。

7.文本显示长度不同机型不一致, 怀疑要给Page指定min-width。

8.注意!必须确定每个计时器(setTimeout和setInterval)是否应该在页面结束时Stop,否则在hide后重新show页面,计时器没停止,可能导致重大问题。

9.wx:if包含的物体(包括自身)加动画有bug,播放一次动画->隐藏->显示->物体卡在动画第一个step结束后,之后再播动画怎么setData都不起作用(因为动画是差值播放。永远停在第一步结束, 即重新播放的第一步永远不会再执行)。解决方法: 每次重新显示后�先清掉之前的动画,并在非本帧(setTimeout 50以上)重新setData动画数据。

10.swiper-item里包含scroll-view 时, scroll-view 不能自动取得子物体的总高度,需要自己代码指定。

11.setInterval非常不精准!!!, 总会超过实际设定时间(间隔1000ms时 误差:pc 2ms以内, 中等性能安卓机 10ms左右), 会造成较大的累积差。解决:通过更小的Interval实现无累计差的、相对精确的Interval。

12.setTimeout也不精准。 如果套了几层、或者用setTimeout以递归形式变相实现setInterval的,需要额外注意了,必定会和上边setInterval一样,造成累积误差。

//更小的Interval实现无累计差的、相对精确的Interval。
//思路:每次补了上次的误差。超出误差范围会掉回来,从而无累计。
//需要在频率(影响性能)和误差范围之前做权衡。
var lastTime = (new Date()).valueOf();
setInterval(function () {
  var now = (new Date()).valueOf();
  if (now - lastTime >= 1000){
    lastTime = lastTime + 1000;
    console.log("now: " + now, "lastTime: " + lastTime);
  }
}, 10);

--------------------NRatel割--------------------
NRatel
转载请说明出处,谢谢

猜你喜欢

转载自blog.csdn.net/NRatel/article/details/83663247