概述
在项目开发和运行的过程中,总是少不了各类升级。例如某个功能组件需要更高的依赖库、数据项需要进行兼容等等问题。遇到此类问题开发者需要使用版本号来解决。版本号通常由三部分组成:主版本号、次版本号和修订版本号
通常来说升级会涉及到三个点:向下兼容、协商升级、拒绝服务
当你做了向下兼容的功能性新增时,就需要升级次版本号;当你做了向下兼容的问题修正时,就需要升级修订版本号
/** 比较版本号的大小
* version1:版本号1
* version2: 版本号2
**/
const compareVersions = (version1, version2) => {
const v1= version1.split('.').map(v => +v) // 转化成数字数组
const v2= version2.split('.').map(v => +v)
const b1 = v1.every(v => !isNaN(v)) // 判断数组的每一项是否是数字
const b2 = v2.every(v => !isNaN(v)) // 如果不是则返回错误信息
if(!b1 || !b2) return '版本号错误,只能包含数字、.'
const len = Math.max(v1.length, v2.length)
for (let i = 0; i < len; i++) {
const num1 = v1[i] || 0
const num2 = v2[i] || 0
if (num1 > num2) return 1 // 如果版本号1大于版本号2,则输出1
if (num1 < num2) return -1 // 反之则输出 -1
}
// 如果版本号1 等于版本号2,则输出0
return 0
}