小程序进阶-常见问题

  1. 小程序首次加载很慢?
    答:小程序首次加载慢,但是再次打开会快很多,是因为小程序做了缓存,再次打开相同页面或者发送相同请求时使用的缓存的数据。小程序发送第三方服务请求(相同于后台)所用的时间,明显比浏览器花费的时间更多。综合微信社区给出的解释,可以猜测是“SSL证书”的原因,我们一般喜欢使用Let’s Encrypt的免费证书,ios版本对LE的证书处理是有问题的,建议开发者更改为阿里云的免费或付费证书,实践证明是有用的。
    小程序进阶-常见问题_第1张图片

  2. 小程序页面跳转有哪些方法,它们之间有什么区别?
    答:

//保留当前页面,跳转到应用内的某个页面。但是不能跳到 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
})
  1. 从onLaunch、onLoad,onHide,onShow,onReady,onUnload,了解微信小程序和小程序页面的生命周期。
    小程序进阶-常见问题_第2张图片
    小程序生命周期
    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()

  2. 时间戳和日期

日期对象

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
}
  1. [Event] 21 listeners of event videoPlayerInsert have been added, possibly causing memory leak.解决办法:微信开发工具,切换调式基础库到最新版本。
    小程序进阶-常见问题_第3张图片
  2. Page “pages/…” has not been registered yet.
    答:可能是某个import引用出错,请仔细看出错位置。

你可能感兴趣的:(小程序,微信,小程序,微信小程序)