javascript比较语义化版本号的实现代码


Posted in Javascript onSeptember 09, 2016

前言

所谓“语义化版本号”,就是在版本号中体现出语义,或者说版本号本身是有意义的,不再是随意给的一个数字。这个规范将版本号中每个数字的意义都做了比较严格的说明。当然,其中大部分内容还是沿用我们之前说过的业内的约定,所以,对于有版本号意识的开发者来说,接受这个规范是很容易的。

在移动端APP第三方开发中经常会碰到一些因为版本不同而造成JS SDK或JS API差异或支持的问题。对于移动前端来说,在实际第三方开发中可能会需要根据APP的版本号做一些特殊的业务逻辑处理。

语义化版本号

一般语义化版本号通常定义是这样的:

Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]
 
主版本号   .子版本号    [.修正版本号  [.编译版本号 ]]

定界符一般使用.

语义化版本号比较方法

这样我们可以做版本号比较,这里提供一个粗陋的方法:

/**
 * 版本比较 VersionCompare
 * @param {String} currVer 当前版本.
 * @param {String} promoteVer 比较版本.
 * @return {Boolean} false 当前版本小于比较版本返回 true.
 *
 * 使用
 * VersionCompare("6.3","5.2.5"); // false.
 * VersionCompare("6.1", "6.1"); // false.
 * VersionCompare("6.1.5", "6.2"); // true.
 */
var VersionCompare = function (currVer, promoteVer) {
 currVer = currVer || "0.0.0";
 promoteVer = promoteVer || "0.0.0";
 if (currVer == promoteVer) return false;
 var currVerArr = currVer.split(".");
 var promoteVerArr = promoteVer.split(".");
 var len = Math.max(currVerArr.length, promoteVerArr.length);
 for (var i = 0; i < len; i++) {
  var proVal = ~~promoteVerArr[i],
   curVal = ~~currVerArr[i];
  if (proVal < curVal) {
   return false;
  } else if (proVal > curVal) {
   return true;
  }
 }
 return false;
};

使用也很简单:

VersionCompare("6.3","5.2.5"); // false.
VersionCompare("6.1", "6.1"); // false.
VersionCompare("6.1.5", "6.2"); // true.

这里需要注意的是根据我自己的业务逻辑当前版本小于比较版本返回 true。你可以根据自己的业务逻辑修改代码。

比如我们要获取微信的版本号,可以这样写:

var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
var currVer = wechatInfo[1];
if (VersionCompare(currVer, "6.2.5")) {
 //你的业务逻辑
}

注意:

时间仓促,这个方法仅仅作为普通的常用方法,没有提供只比较主版本或子版本的方法,而是比较最终的整个版本号。

总结

以上就是这篇文章的全部内容了,希望对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
document.getElementById方法在Firefox与IE中的区别
May 18 Javascript
JQuery从头学起第二讲
Jul 04 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 Javascript
你可能不知道的JavaScript的new Function()方法
Apr 17 Javascript
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
详解angularjs实现echart图表效果最简洁教程
Nov 29 Javascript
Angular6封装http请求的步骤详解
Aug 13 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
js计时事件实现圆形时钟
Mar 25 Javascript
JavaScript ES6的函数拓展
Jan 18 Javascript
js防阻塞加载的实现方法
Sep 09 #Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 #Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 #Javascript
Vuejs第十三篇之组件——杂项
Sep 09 #Javascript
jQuery属性选择器用法示例
Sep 09 #Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 #Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 #Javascript
You might like
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
写演讲稿要注意的六件事
2014/01/14 职场文书
旷课检讨书1000字
2014/02/14 职场文书
校长师德表现自我评价
2015/03/04 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python