转眼间已经参与过好几个小程序的开发了,下面我将开发中的那些注意点和各位小伙伴们分享下,妥妥的干货一枚。
WXML
1.不要换行写
微信开发者工具不会对代码进行trim操作,如果代码中换行,页面也直接换行。
2. wx:if vs hidden
一般来说,wx:if有更高的切换消耗而hidden有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。
3.图片处理
① 大图片也会造成页面切换的卡顿有一部分小程序会在页面中引用大图片,在页面后退切换中会出现掉帧卡顿的情况。
② 图片占容量代码包限制是2MB,图片占用空间较大,建议都上传到**CDN **上,代码里直接引用链接。
③ 大图片小点击位 小程序主要在手机端运行,手机屏幕大小有限,所以尽量点击位大点。
④ 图片截取存在图片没有按原图宽高比例显示,可以设置 image 组件的 mode 属性,来保持原图宽高比。
⑤ CSSSprites所有零星图片都包含到一张大图中,减少请求数。
4. WXS模块
每个 wxs 模块均有一个内置的 module 对象。 直接在wxml中引入,可以将写需要转化数据的写进去,防止给setData加负担。
WXSS
1. Css伪类看不到
在微信开发者工具中, Styles不会显示Css伪类,喜欢写::before或:first-child的小伙伴们请注意了,你的伪类在控制台是看不到的,所以本妹子不建议在小程序里用 Css 伪类,以防找不到问题点不好修复bug。
小程序button自带给after伪类添加了边框,通过开发者工具是看不到 after ,我们需要自行去掉边框。
button::after {
border: none;
}
hover伪类则可以用小程序自带的属性hover-class代替。
2. 自定义颜色限制
不是所以颜色配置都能随心所欲,比如导航栏标题颜色,仅支持black / white;下拉 loading 的样式,仅支持 dark / light。所以出视觉图关注下。
滚动区域没有开启惯性滚动
当加了overflow: scroll时,IOS 下需要额外设置:-webkit-overflow-scrolling: touch,来开启惯性滚动。
JS
1. JavaScript 支持情况
如果需要支持到 IOS8 话,建议下面 js 方法都不使用。
2. 分享事件不支持异步
如果你想自定义分享图片,则在生命周期onShareApp
Message中编写如下所示:
Page({
onShareAppMessage: function (res) {
return {
title: '自定义转发标题',
imageUrl: 'https://raoenhui.github.io/images/logo.png'
}
}
}
但是onShareAppMessage不能支持异步,如果你想从接口里获取分享图片URL,必须在 onLoad 提前读取并放入Data中。
3. 小程序有并发限制
wx.request、wx.uploadFile、wx.downloadFile 的最大并发限制是 10 个。所有为了保险起见,需要写个请求队列,如果并发量大于10,则等待请求。
4. 循环中添加key
对于经常要更新的列表需要加上key值,key值相当于索引,但是key值不要用index ,因为index在增加删除的时候可能不变产生混乱,推荐用唯一标示id ,对数据改变之后的diff更新比较有很大的性能提升。PS:如果是单纯只显示的列表,不需要操作更新,那不需要加key 。
5. http需变https
HTTP是明文传输有篡改内容的风险,而且有些安卓机会不兼容。所以我们需要使用https。 所以开需求评审的时候,要注意后端要写成https,如果是运营配的数据,后端最好有个转https方法,输入了url自动转成https链接。
在微信开发者工具中,可勾选”不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书”规则即可用http,但是在实体里并没有这个选项,所以建议开发时就用https路径。
原文作者:腾讯高级工程师 王贝珊
原文链接: