前言微信小程序自去年公測以來,我司也申請了一個帳號開發,春節前后開始開發,現在終于告一個段落了。謹以此文記錄下踩過的坑。坑1:scroll-view與onPullDownRefresh沖突由于有幾個 ...
前言
微信小程序自去年公測以來,我司也申請了一個帳號開發,春節前后開始開發,現在終于告一個段落了。謹以此文記錄下踩過的坑。
坑1:scroll-view與onPullDownRefresh沖突
由于有幾個頁面需要將導航tab欄自動置頂,所以使用了scroll-view。然而又想要下拉刷新,本來想直接使用onPullDownRefresh,結果卻發現下拉的時候onPullDownRefresh根本沒有!囧!
研究了半天,最終監聽touchXXX自己模擬了個下拉刷新。(具體實現方案改日再分享。)為了盡量接近微信原生的下拉刷新,還特意抄了半天微信原生的下拉刷新動畫...
<div class="loading"><div class="dot"></div></div>
.loading{
display: block;
width: 100%;
height: 20px;
padding: 20px 0;
text-align: center;
background: #eee;
}
.loading::before,
.loading .dot,
.loading::after
{
content: '';
display: inline-block;
color: transparent;
width: 14px;
height: 14px;
border-radius: 14px;
background: #fff;
overflow: hidden;
margin: 0 8px;
}
.loading::before,
.loading .dot,
.loading::after{
-webkit-animation: pulldown-refresh-loader 1.4s infinite ease-in-out;
animation: pulldown-refresh-loader 1.4s infinite ease-in-out;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.loading::before{
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loading .dot{
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
@-webkit-keyframes pulldown-refresh-loader {
0%, 80%, 100% { background-color: #f0f0f0; }
40% { background-color: #fff; }
}
@keyframes pulldown-refresh-loader {
0%, 80%, 100% { background-color: #f0f0f0; }
40% { background-color: #fff; }
}
坑2:無法獲取元素的高度 本來有個頁面是要做成監聽滾動,然后自動切換頂部tab的,類似 bootstrap的滾動監聽 的效果。 然而里面有大段的文本,而文本的高度根本算不來,囧。還是放棄這個效果吧。
坑3:無法在bindXXX的事件處理的時候阻止冒泡 有人說,你可以使用catchXXX呀!然而,我在某些時候才需要阻止事件冒泡,另外一些時候是不需要阻止冒泡的,是需要默認行為...
最終采用了一個很挫的方案來“解決” -- 復制那個根據是否組織冒泡分別渲染成bindXXX或catchXXX...:
<view class="{{preventDefault && 'hide'}}" catchXXX="yyy" >zzz</view>
<view class="{{!preventDefault && 'hide'}}" bindXXX="yyy" >zzz</view>
這個還不能簡單地使用wx:if,否則切換的成本太高了點。
坑4: 預覽前構建時間比較長 貌似沒有好辦法,預覽的構建貌似不是增量的,希望微信官方啥時候能改成增量的就好了。點擊預覽按鈕后去倒杯水喝吧。
坑5: 組件復用好蛋疼 小程序里面雖然提供了<template>
可以復用一部分模版,但是我們要是想復用一個具有完整功能組件(比如一個對話框 )就會非常蛋疼 -- 數據怎么傳呢?業務邏輯代碼寫在哪里?樣式如何加載?
目前解決方法是將組件封裝成 xxx.js, xxx.wxml 和 xxx.wxss,用的時候都要引用下... 好麻煩!很懷念React里面的組件。
回頭考慮通過在微信小程序前面加一道構建,以便自動引用組件相關東東。
坑6:不支持webview直接嵌入html代碼 像后臺通過富文本編輯器錄入的文章頁面沒法直接顯示了... 還好有wxParse。盡管樣式調起來很蛋疼,起碼能看了。
坑7:測試與發布 微信開發者工具的預覽版本只能誰登錄誰來掃,其他人掃根本開不了 --- 同是一個小程序的開發者也不行,囧。為了讓測試人員方便測試,還得教會測試人員如何登錄微信開發者工具,如何更新代碼,如何構建并預覽小程序。。。
啥,你說有“預覽版本”,預覽版本更麻煩,上傳的時候只能管理員才能上傳,上傳完還必須選擇為預覽版本,預覽版本還不是每個人能看的,而是加到預覽者里面的才能看(開發者居然默認沒有加到預覽者里面!) -- 每一個操作都是要管理員掃碼...
后記 微信小程序坑還有很多,未完待續...