• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

微信小程序--理论知识

Data: 2017-12-21 09:00:32Form: JournalClick: 8

# 微信小程序--理论知识


# 一、前台/后台

  • 小程序启动后,界面被展示给用户,此时小程序处于前台状态
  • 当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态
  • 当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台
  • 但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行

# 二、小程序启动

  • 小程序启动可以分为两种情况,一种是冷启动,一种是热启动
    • 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动
    • 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动

# 三、小程序销毁时机

  • 当小程序进入后台,可以维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁
  • 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收

# 四、基础库

  • 每次小程序升级后,都会发布一个新版本,新版本包含bug修复,新增功能
  • 最新版本:2.10.3 更新时间:2020年3月11日
  • 为了避免新版本的基础库给线上小程序带来未知的影响,微信客户端都是携带 上一个稳定版 的基础库发布的
  • 小程序的能力需要微信客户端来支撑,每一个基础库都只能在对应的客户端版本上运行,高版本的基础库无法兼容低版本的微信客户端

# 1、基础库版本分布

编号基础库版本安卓版本安卓用户占比iOS版本iOS用户占比总体占比
12.10.37.0.921.35%7.0.925.09%22.13%
22.10.2-70.72%-63.00%69.11%
32.10.1-1.24%-0.01%0.99%
42.9.57.0.71.65%7.0.74.86%2.32%
52.9.3-0.68%-0.00%0.54%
62.8.37.0.51.88%7.0.51.88%1.88%
72.7.77.0.40.83%7.0.41.35%0.94%
82.7.1-0.01%-0.00%0.01%
92.6.67.0.30.82%7.0.31.59%0.98%
102.5.27.0.00.26%7.0.00.53%0.31%
112.4.46.7.30.22%6.7.30.81%0.35%
122.3.26.7.20.04%6.7.20.20%0.07%
132.2.56.6.70.11%6.7.00.19%0.13%
142.1.3--6.6.70.08%0.02%
152.0.96.6.60.05%6.6.60.12%0.06%
161.9.976.6.20.06%6.6.20.10%0.07%
171.9.96.6.10.02%6.6.10.05%0.03%

# 2、兼容:版本号比较

  • 小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容
function compareVersion(v1, v2) {
    v1 = v1.split('.');
    v2 = v2.split('.');
    const len = Math.max(v1.length, v2.length);

    while (v1.length < len) {
        v1.push('0');
    }
    while (v2.length < len) {
        v2.push('0');
    }

    for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i]);
        const num2 = parseInt(v2[i]);

        if (num1 > num2) {
            return 1;
        } else if (num1 < num2) {
            return -1;
        }
    }
    return 0;
}
module.exports.compareVersion = compareVersion;
// 调用 wx.getSystemInfo 或者 wx.getSystemInfoSync 获取到当前小程序运行的基础库的版本号
var common = require('../../utils/common.js');
page({
    onLoad(){
        const version = wx.getSystemInfoSync().SDKVersion;
        if (compareVersion(version, '1.1.0') >= 0) {
            
        } else {
            // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
            wx.showModal({
                title: '提示',
                content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
            })
        }
    }
})

# 3、API 存在判断

if (wx.openBluetoothAdapter) {
    wx.openBluetoothAdapter()
} else {
    // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
    wx.showModal({
        title: '提示',
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
    })
}

# 4、wx.canIUse

  • 通过 wx.canIUse 来判断是否可以在该基础库版本下直接使用
wx.showModal({
    success: function(res) {
        if (wx.canIUse('showModal.success.cancel')) {
            console.log(res.cancel);
        }
    }
})

# 5、设置最低基础库版本

  • 为便于开发者解决低版本基础库无法兼容小程序的新功能的问题,开发者可设置小程序最低基础库版本要求
  • 设置后,若用户基础库版本低于设置值,则无法正常打开小程序,并提示用户更新客户端版本
Name:
<提交>