- 小程序首次加载很慢?
答:小程序首次加载慢,但是再次打开会快很多,是因为小程序做了缓存,再次打开相同页面或者发送相同请求时使用的缓存的数据。小程序发送第三方服务请求(相同于后台)所用的时间,明显比浏览器花费的时间更多。综合微信社区给出的解释,可以猜测是“SSL证书”的原因,我们一般喜欢使用Let’s Encrypt的免费证书,ios版本对LE的证书处理是有问题的,建议开发者更改为阿里云的免费或付费证书,实践证明是有用的。 - 小程序页面跳转有哪些方法,它们之间有什么区别?
答:
//保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
wx.navigateTo({
url: 'test?id=1',
events: {
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
acceptDataFromOpenedPage: function(data) {
console.log(data)
},
someEvent: function(data) {
console.log(data)
}
...
},
success: function(res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
}
})
//关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
wx.redirectTo({
url: 'test?id=1'
})
//关闭所有页面,打开到应用内的某个页面
wx.reLaunch({
url: 'test?id=1'
})
//跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.switchTab({
url: '/index'
})
//关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层
wx.navigateBack({
delta: 2
})
- 从onLaunch、onLoad,onHide,onShow,onReady,onUnload,了解微信小程序和小程序页面的生命周期。
- 小程序生命周期
onLaunch监听小程序初始化,用户首次打开小程序,触发 onLaunch,全局只触发一次
小程序初始化完成后,触发onShow方法,监听小程序显示
小程序从前台进入后台,触发 onHide方法
小程序从后台进入前台显示,触发 onShow方法
小程序后台运行一定时间,或系统资源占用过高,会被销毁
页面生命周期
onLoad: 页面加载,一个页面只会调用一次。参数可以获取wx.navigateTo和wx.redirectTo及中的 query。
onShow: 页面显示,每次打开页面都会调用一次。
onReady: 页面初次渲染完成,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。
onHide: 页面隐藏,当navigateTo或底部tab切换时调用。
onUnload: 页面卸载,当redirectTo或navigateBack的时候调用
onLaunch监听小程序初始化、onShow监听小程序显示、onHide监听小程序隐藏等生命周期回调函数
页面生命周期调用顺序:onLoad>onShow>onReady
wx.navigateTo:进入A页面(A执行onLoad()–>onShow()–>onReady());A页面navigateTo B页面(A执行onHide(),B执行onLoad()–>onShow()–>onReady());B页面返回A页面(B执行onUnload(),A执行onShow());退出A页面(A执行onUnload()) - 时间戳和日期
日期对象
var dateTime = new Date();
获取当前年月日时分秒
var year = dateTime.getFullYear();
var month = dateTime.getMonth() +1;
var day = dateTime.getDate();
var hour = dateTime.getHours();
var minute = dateTime.getMinutes();
var second = dateTime.getSeconds();
时间戳
var timeStamp = Date.now();
时间戳转化为日期对象
var dateTime = new Date(timeStamp)
日期格式化
//map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
- [Event] 21 listeners of event videoPlayerInsert have been added, possibly causing memory leak.解决办法:微信开发工具,切换调式基础库到最新版本。
- Page “pages/…” has not been registered yet.
答:可能是某个import引用出错,请仔细看出错位置。