小程序 总结

269 阅读4分钟

1. 冷启动 热启动(更新机制)

小程序先提交了一个版本,但是用的时候发现了一些问题需要及时的更新,这时候就要发布新版本。如何让用户自己的小程序也更新到最新版本呢?

一、运行机制

小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内(五分钟)再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动; 冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。

小程序没有重启的概念 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁 当短时间内(5s)连续收到两次以上收到系统内存告警,会进行小程序的销毁

二、更新机制

小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。

三、更新API

wx.getUpdateManager()使用该接口,可以获知是否有新版本小程序、新版本是否下载好以及应用新版本的能力。

// 获取小程序更新机制兼容
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      updateManager.onCheckForUpdate(function (res) {
        // 请求完新版本信息的回调
        if (res.hasUpdate) {
          updateManager.onUpdateReady(function () {
            wx.showModal({
              title: '更新提示',
              content: '新版本已经准备好,是否重启应用?',
              success: function (res) {
                if (res.confirm) {
                  // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                  updateManager.applyUpdate()
                }
              }
            })
          })
          updateManager.onUpdateFailed(function () {
            // 新的版本下载失败
            wx.showModal({
              title: '已经有新版本了哟~',
              content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
            })
          })
        }
      })
    } else {
      // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
      })
    }

不知道把这段代码放在哪里,写这段代码时查了好多资料,最后放在了app.js的onLaunch方法里了 发布的第一版不会生效,下一版才会生效的。

对应的方法:

冷启动:在这里面调用的方法,当小程序被创建,也就是冷启动时会调用

onLoad(){
 
},

热启动:在这里调用的方法,不管冷启动还是热启动都会调用

onShow(){
    this.initPage();
},

此外:app.js中的话是支持 onShow 事件的      执行顺序  onLoad->onShow

相关链接:blog.csdn.net/qq_41619796…

相关链接:blog.csdn.net/gwdgwd123/a…

2. 生命周期

  • 打开小程序 -> app.onLaunch -> app.onShow -> Page.onLoad -> Page.onShow -> Page.onReady

  • 进入下一个页面 -> Page.onHide -> Next.onLoad -> Next.onShow -> Next.onReady

  • 返回上一个页面 -> Next.onUnload -> Page.onShow

  • 离开小程序 -> app.onHide

  • 再次进入 -> app未销毁 ->app.onShow 否则从头开始(销毁判断看上文运行机制)

注意:Tabbar页面初始化之后不会被销毁,也就是只会执行一次 onLoad 函数

  • 只触发一次的,一般都是用来初始化操作

    onLaunch:初始化全局数据,注意异步问题

    onLoad:初始化页面数据

    onReady:代表页面已经准备妥当,界面内容的修改,最好放在这里,如wx.setNavigationBarTitle

    onUnload:清除定时器,因为所有页面的脚本逻辑都跑在同一个JsCore线程

  • 触发多次的,一般用来改变状态

    onShow:刷新

    onHide:重置

3.小程序与H5的区别

4.小程序用户登录架构设计

5.微信小程序的自定义组件

6.你在微信小程序中遇到什么坑,最后是怎么解决的?

  • 微信基础库版本升级造成canvas绘制图片失败
  • navigateToMiniProgram 小程序跳转 oppo 黑屏,兼容问题
  • 微信pc版本 多个api不支持,需要对pc端小程序的功能进行限制

7.微信小程序是否有可以跳转其他程序的方法

相关文章链接:

juejin.cn/post/684490…