比较小程序基础库版本号的正确方法


目前我们发现不少开发者不太了解小程序的基础库版本号规则,在这里介绍一下。


小程序基础库版本号使用 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 要老


后续版本我们会在基础库中增加版本比较方法,到时候建议大家直接使用该方法。


最后一次编辑于  03-23  (未经腾讯允许,不得转载)
收藏 0评论 12
  • 刘冰刘冰

    可否公布一下微信6.6.0的覆盖率?

    赞同 1没有帮助
    评论 0
    复制
    03-02
  • Gavin²º¹⁸Gavin²º¹⁸

    请问小程序审核为何过了11天,还没有审核,求解,谢谢,实在不知道找谁问

    赞同 0没有帮助
    评论 0
    复制
    03-26
  • SpecialSpecial

    @ost 错了,多谢提醒

    赞同 0没有帮助
    评论 0
    复制
    03-23
  • ostost

    compareVersion('1.11.0''1.11.0'// => 0 // 0 表示 1.11.0 和 1.9.9 是同一个版本  


    写错了吧

    赞同 0没有帮助
    评论 0
    复制
    03-13
  • 王子龙王子龙

    compareVersion 这个方法好原始。

    建议大家再包装一次,设计为:isGreaterThan, isLowerThan, isEqual。

    赞同 0没有帮助
    评论 0
    复制
    02-28
  • 吴剑波吴剑波


    听说你们用的是 semver?

    赞同 0没有帮助
    评论 0
    复制
    02-27
  • 吴剑波吴剑波

    yet another version compare lib.


    npm 上比这个好用的很多,像上面这个,遇到 beta 版本怎么办?

    赞同 0没有帮助
    评论 0
    复制
    02-27
  • 🅰مەمەت جان🅰🅰مەمەت جان🅰

    uqurla saluni

    赞同 0没有帮助
    评论 0
    复制
    02-27
  • magicmagic

    我能判断下最高版本库吗,我的其中一个小程序,1.7之后的版本库,socket完全不能用了。

    赞同 0没有帮助
    评论 0
    复制
    02-25
  • wahaowahao

    我觉得最好的还是考虑允许开发者请求更新用户微信版本库

    赞同 0没有帮助
    评论 0
    复制
    02-09