微信小程序填坑记录

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

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

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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NRatel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值