根据已踩过的坑让你走的更丝滑 🤓️
不要对路由Api做封装
- 下面的代码在测试中发现会导致页面卡住跳转失败,换成直接调api就好了
- 测试的页面是选好公众号等待爬虫抓取,正常返回抓取到数据了但页面没跳到文章列表
- 故将所有页面路由都改为直接调微信Api的方式
topage(url, method) {
if (__APP._CFG.double) {
__APP._CFG.double = false;
if (!method) {
wx.navigateTo({
url: url
})
}
if (method == 'redirect') {
wx.redirectTo({
url: url
})
}
if (method == 'tab') {
wx.switchTab({
url: url
})
}
if(method == 'reLaunch') {
wx.reLaunch({
url: url
});
}
if (method == 'back') {
if (isNaN(url)) {
wx.navigateBack({
url: url
})
} else {
wx.navigateBack({
delta: url
})
}
}
setTimeout(function () {
__APP._CFG.double = true
}, 1000)
}
},
最好不要使用缓存传参数
- 缓存用多了有时排查问题困难,传参从明确变成不明确,甚至找不到缓存在什么地方写入的
- 会导致页面间的依赖,直接导致了分享功能的页面依赖其他页面写的缓存,不利于分享功能的实现
- 由于手机缓存有时会被清除,可能会导致程序执行意外发生
- 微信开发工具中调试时可以一键复制页面参数,使用缓存就杯具了
- 故代码中所有用到缓存的地方全被我干掉了
不推荐使用 function.call(this) 的方式调用方法
- 推荐只是客气客气,开发中必须这样做
- 如果有更好的方式请告诉我
Page({
data: {
info: 'Do not .call'
}
onLoad: function (options) {
sayOne.call(this)
sayTwo(this)
},
})
function sayOne() {
var _this = this
console.log(_this.data.info)
}
function sayOne(_this) {
console.log(_this.data.info)
}
墙裂推荐不写 var _this = this
- 懒和一劳永逸应该是一个优秀开发者所具备的品质
- 上面的栗子改写一下,看看没有最懒只有更懒
- 一次定义终身受益,任意使用_this,抛弃this
- 彻底告别随处可见的 var _this = this
var _this
Page({
data: {
info: 'Do not .call'
}
onLoad: function (options) {
_this = this
sayOne.call()
sayTwo()
sayGood()
},
})
function sayOne() {
console.log(_this.data.info)
}
function sayOne() {
console.log(_this.data.info)
}
function sayGood() {
console.log(_this.data.info)
}