比较小程序基础库版本号的正确方法
目前我们发现不少开发者不太了解小程序的基础库版本号规则,在这里介绍一下。 小程序基础库版本号使用 semver 规范,格式为 Major.Minor.Patch,Major、Minor、Patch 均为整数,1.9.901、2.44.322、10.32.44 都是符合 semver 风格的版本号。 通常我们月度发布版本会把 Minor 提升一位,例如从 1.9.x 升级到 1.10.x,如果是修正版本,会把 Patch 提升一位,例如 1.10.0 升级到 1.10.1。目前不少开发者使用了错误的版本号比较方法,例如直接用字符串比较,parseInt 比较等,往后当基础库版本号提升上去后,会引发一些逻辑错误。 在这里建议大家使用以下正确方法: 1. 登录 mp 后台(https://mp.weixin.qq.com),点击左侧导航菜单中的「设置」,设置基础库最低版本号,无需编写任何代码即可限制最低运行版本; 2. 使用以下推荐的代码进行判断: [代码]function[代码] [代码]compareVersion(v1, v2) {[代码][代码] [代码][代码]v1 = v1.split([代码][代码]'.'[代码][代码])[代码][代码] [代码][代码]v2 = v2.split([代码][代码]'.'[代码][代码])[代码][代码] [代码][代码]var[代码] [代码]len = Math.max(v1.length, v2.length)[代码][代码] [代码][代码]while[代码] [代码](v1.length < len) {[代码][代码] [代码][代码]v1.push([代码][代码]'0'[代码][代码])[代码][代码] [代码][代码]}[代码][代码] [代码][代码]while[代码] [代码](v2.length < len) {[代码][代码] [代码][代码]v2.push([代码][代码]'0'[代码][代码])[代码][代码] [代码][代码]}[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < len; i++) {[代码][代码] [代码][代码]var[代码] [代码]num1 = parseInt(v1[i])[代码][代码] [代码][代码]var[代码] [代码]num2 = parseInt(v2[i])[代码][代码] [代码][代码]if[代码] [代码](num1 > num2) {[代码][代码] [代码][代码]return[代码] [代码]1[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]if[代码] [代码](num1 < num2) {[代码][代码] [代码][代码]return[代码] [代码]-1[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]0[代码][代码]}[代码][代码]compareVersion([代码][代码]'1.11.0'[代码][代码], [代码][代码]'1.9.9'[代码][代码]) [代码][代码]// => 1 // 1 表示 1.11.0 比 1.9.9 要新[代码][代码]compareVersion([代码][代码]'1.11.0'[代码][代码], [代码][代码]'1.11.0'[代码][代码]) [代码][代码]// => 0 // 0 表示 1.11.0 和 1.11.0 是同一个版本[代码][代码]compareVersion([代码][代码]'1.11.0'[代码][代码], [代码][代码]'1.99.0'[代码][代码]) [代码][代码]// => -1 // -1 表示 1.11.0 比 1.99.0 要老[代码] 后续版本我们会在基础库中增加版本比较方法,到时候建议大家直接使用该方法。