微信小程序开发注意指南及优化实践
1. WXML
不要输入换行符,不允许空格
微信开发者工具不剪代码。如果代码中有换行,页面也会直接换行。
wx:if vs hide
一般来说,wx:if 的切换成本较高,hidden 的初始渲染成本较高。因此,如果需要频繁切换,则 hide 更好,如果运行时条件不太可能改变,则 wx:if 更好。
图像处理
1.大图片也会造成页面切换延迟 一些小程序引用大页面图片,来回切换页面时会出现掉帧现象。 ? 3。图片大,点击空间小 小程序主要运行在手机上。手机屏幕尺寸有限,所以尽量让点击空间更大。 4。图像采集 如果有图像未按照原图显示,可以设置image
组件的图像属性mode
来保留原图像。 ?直接添加为wxml格式,可以写入需要转换的数据,这样就不会增加负载,setData也会变长。建议页面使用少于1000
个WXML节点,节点树深度小于30
级别,子节点数量不超过60
s 2. WXSS sCs 伪类在微信开发者工具中不出现
Styles
不显示 Css
伪类。想要写 ::before 或 :first child 的朋友请注意,你的伪类在控制台中是看不到的,所以我不建议在 widgets 中使用 Css
伪类,如果出现问题未找到并且该错误很难修复。在
小程序中,按钮 在
之后将其自己的边框添加到伪类中。 之后的
通过开发者工具不可见。我们必须自己消除边界。
button::after {
border: none;
}
复制代码
hover
伪类可以替换为小程序自带的属性hover-class
。
某些CSS3属性无法使用
例如无法使用transformation:rotate(180deg)。
自定义颜色限制
并非所有颜色配置都可以根据您的喜好进行自定义。例如导航栏标题颜色仅支持黑/白;下拉加载样式仅支持深色/浅色。所以要注意视觉图表。
滚动区域不允许惯性滚动
添加溢出:滚动时,
IOS
需要额外设置: -webkit-overflow-scrolling:启用触摸惰性。 ?
分享事件不支持异步
如果要编辑分享的图片,在lifecycleShareAppMessage中写如下:
Page({
onShareAppMessage: function (res) {
return {
title: '自定义转发标题',
imageUrl: 'https://www.codeqd.com/zb_users/upload/2023/09/logo.png'
}
}
})
复制代码
但是
不能发消息,如果你想❀ynch❀ronshareApp使用接口获取共享图片的URL,必须提前读取并保存在Data文件夹中
onLoad
小程序有并发限制
小程序有并发限制
Wx.request最大并发限制。 uploadFile 和 wx.downloadFile 是 10。
为了确定,你需要写一个请求队列。如果并发数大于10,则等待请求。
使用公共方法和组件
使用公共方法和组件
编写公共方法和组件可以避免重新发明轮子。 1. 公共埋点方法 2. 处理js的不同方法(传输https、throttle、formatTime等) 3. 公共组件(iphonex兼容组件、倒计时组件等)
捕获绑定事件
捕获绑定事件
例如
catchtouchmove
弹出窗口可防止滑动。绑定绑定事件并不能阻止冒泡事件向上冒泡。绑定Catch事件可以防止冒泡事件向上冒泡。
将密钥
将密钥
添加到需要经常更新的列表中。您需要添加
key
的值。键值对应于索引,但不应使用 key
值。 索引
,因为索引
可能保持不变,导致在添加和删除时造成混乱。建议使用唯一标识符id
,这样可以大大提高数据变化后diff更新的性能。 PS:如果是只可见且不需要更新的列表,则不需要添加key
。
熟练使用nextTick
熟练使用nextTick
小程序和vue的写法类似。还有
nextTick
。当当前同步过程完成后,执行下一个时间块。例如,对于视图层中的某些数据,您可以等到页面处理完成后再获取它以获取更多详细信息。包括clearInterval这些我们经常滚动来计算高度和倒计时。用于动画。当我移动到另一个仍在运行的页面时,请小心后端js
文件的陷阱。两者都是基于相同的原始toast,wx.showLoading()和wx.showToast来实现的。 ( ) 一次只能显示一个。 wx.hideLoading() 也隐藏了Toast; wx.hideToast() 也隐藏下载。失败需要 toast 闪过去,可能是因为调用了 wx.hideLoading() 。 。
http必须更改为https
http必须更改为https
HTTP是纯文本传输,内容可能被篡改,部分Android设备可能不兼容。所以我们必须使用https。因此,在进行需求检查的时候,要注意后端是写成https的。如果是函数分配的数据,最好有后台转换为https的方法。输入 URL 会自动将其转换为 https 链接。
在微信开发者工具中,可以勾选“不检查合法域名、网页视图(公司域名)、TLS版本和HTTPS证书”规则来使用http,但实体没有此选项。 ,所以开发时建议使用https路径。
埋点陷阱
埋点陷阱
埋点使用公共方法,页面泄露
pv
埋点放置
this.setData({
list[index] = newList[index]
})
复制代码
this.setData({
list[index] = newList[index]
})
复制代码
this.setData({
list[index] = newList[index]
})
复制代码
this.setData({
list[index] = newList[index]
})
复制代码
。
预载
预载
1。数据预加载。在上一页中,请求用户界面并将其存储在对象中。下一页直接从目标获取它。有优点也有缺点。从业务角度看是否需要预加载数据。录音还可以存储数据。同一微信用户、同一个小程序的存储限制为10MB。 2、分包预加载预加载规则
预加载规则
预加载分包活动在进入某个页面时开始,通用预加载大小限制为2M。
"preloadRule": {
"sub1/index": {
"packages": ["important"]
}
}
复制代码
3。图像预加载对视觉效果的要求越来越高。如果想要多张图片流畅动画,可以先加载图片,然后直接使用request先请求图片。
关于 setData 的注释
关于 setData 的注释
1。通常setData不需要在SetData中传递未绑定到WXML的变量。 ?
,用户感受不到后台状态页面的渲染。另外,后台状态页面setData
也会阻止前台页面的执行。所以,如上所述,不要忘记clearTimeout
,clearInterval
。 4。其他
使用子包
由于小程序包大小限制,整个小程序的所有子包(包括独立子包和常规子包)大小不超过 8M ,单个子包/主包大小不能超过 2M。建议将不需要在首屏显示的所有内容进行分包。子包就像H5制作的子包一样,可以按需下载。
及时清理无用的代码和资源
在日常开发过程中,我们可能会引入新的库文件,过了一段时间这个库就会因为各种原因不再使用。通常我们只是从代码中删除引用而忘记删除此类库文件。目前小程序打包是将项目的所有文件都放到一个代码包中。也就是说,这些没有实际使用到的库文件和资源也被放到了代码包中,影响了整个代码包。尺寸。
sitemap配置
小部件根目录下的sitemap.json文件用于决定是否允许微信索引小部件及其页面。文件的内容是一个 JSON 对象。如果没有 sitemap.json 文件,则默认为所有页面。全部都允许被索引。 ![微信小程序开发注意指南和优化实践]()
作者:前端女孩
链接:https://juejin.im/post/5d0a032cf265da1b827aa035
来源:版权属于❙掘金如需商业转载请联系作者授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。