微信小程式比較版本號
阿新 • • 發佈:2019-02-20
小程式基礎庫版本號使用 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。Major位則是重大
特性發布時才會被提升一位。
在小程式中,可以通過wx.getSystemInfo()或者wx.getSystemInfoSync()方法獲取小程式版本號
不少開發者會使用錯誤的版本號比較方法,例如直接用字串比較,parseInt 比較等,往後當基礎庫版本號提升上去後,
會引發一些邏輯錯誤,如程式碼8所示。
var info = wx.getSystemInfoSync() // info.SDKVersion == "1.11.0"
if (info.SDKVersion > "1.9.0") { // 此時條件為false,無法進入if分支
// 處理高版本小程式的邏輯
}
正確的比較方法如下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.9.9是同一個版本 compareVersion('1.11.0', '1.99.0') // => -1 // -1表示1.11.0比 1.99.0要老
以上就是小程式版本號比較的寫法,為了相容低版本使用者以及某些場景下非常試用