1. 程式人生 > >微信小程式 填坑記錄

微信小程式 填坑記錄

本文由本人簡書搬遷至此,並做小幅修改。

老闆要讓做個小程式,並且很著急。於是邊學邊幹開始做微信小程式。

過程中遇到不少坑,前期時間太緊沒有記錄,後期憑記憶簡單記一下,防止再次入坑。

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
轉載請說明出處,謝謝