最近公司开始做一些小程序项目,总结了小程序开发中遇到的一些坑,小程序新手,欢迎指点。
-
css里不可是使用background做背景图,在手机上不显示;
-
如果页面有超过四次的跳转,不可以使用
wx.navigateTo()方法,可以使用wx.redirectTo(),在需要跳转的标签写上open-type=“redirect”。 -
如果有页面底部有小程序自带的tab切换,页面上也有点击事件可以与之跳到同一个页面,不可以使用
wx.navigateTo(),需要用wx.switchTab跳转。 -
下拉刷新:在需要的页面的 json 中添加
{"enablePullDownRefresh":true}该行代码,同时在页面刷新完成后添加:
wx.hideNavigationBarLoading() //完成停止加载
wx.stopPullDownRefresh() //停止下拉刷新,防止在安卓手机下拉后不回到顶端
- 尽量不要传" "和"0"等值到后台,小程序会默认为 null 或 undefined ;
- 弹出层,如果超过六个字,不可以用微信自带的方法,要用:
//在页面任意地方添加
<view class="ad_popError" wx:if="{{popErrorMsg}}">{{popErrorMsg}}</view>
//在app.css中添加
.ad_popError{
background: #000;
color: #fff;
height: 58rpx;
line-height: 58rpx;
font-size: 24rpx;
text-align: center;
position: absolute;
left: 10%;
top: 50%;
width: 80%;
border-radius:5px;
z-index:3;
margin-top:-29rpx;
opacity: 0.6;
}
//在js中添加方法:
ohShitfadeOut() {
var fadeOutTimeout = setTimeout(() => {
this.setData({ popErrorMsg: '' });
clearTimeout(fadeOutTimeout);
}, 2000);
},
//在需要弹出的地方添加:
that.setData(
{ popErrorMsg: "提示语" }
);
that.ohShitfadeOut();
return;
- 如果有需要进入页面就刷新的地方,接口路径要写在
onshow里,不需要刷新的页面写在onload里,否则每次都重新加载会又慢又卡, 但是也不要把所有的接口都写在onshow里会浪费流量。 - 跳转页面在 url 上带参数大小写问题:例如:标签上的
data-headerImg=‘{{item.header}}’,在 js 中,headerImg 被默认为 headerimg,不识别大写字母。 - 如果用微信自带的扫一扫功能跳转到小程序的指定页面,小程序规定只能添加50个路径。
- 截取后台返回数据等,只能在 js 中进行操作,不能在 html 中截取。
- 后台返回list数据往页面中赋值是,不可以用for循环进行赋值,需要用小程序的方法在html中写
wx:for="{{items}}",如果在for循环中用setData进行赋值,页面上显示的是都是最后一条数据的值。 - 图片路径的反斜杠自动转成正斜杠。
- css中
font-weight:lighter,在 ios 中识别,(更细) 在 android 上不识别(正常) - 动态倒计时要写在onload里。
- 微信本身的 Bug 引发的兼容性问题有个现成的例子,就是
wx.request()返回的状态码res.statusCode的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。更规范的方法是使用parseInt(res.statusCode) === 200来实现。 - 微信昵称是中文时,有时需要转码,
encodeURIComponent()。 - 如果小程序只有开调式可以调取数据,这时要考虑代码里的域名和设置域名是否一样。