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 相关文章推荐
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
angularJS 中input示例分享
Feb 09 Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
Jun 07 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
Dec 19 Javascript
使用react context 实现vue插槽slot功能
Jul 18 Javascript
javascript的delete运算符知识点总结
Nov 19 Javascript
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
Angular CLI发布路径的配置项浅析
Mar 29 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
基于mysql的论坛(3)
2006/10/09 PHP
php以post形式发送xml的方法
2014/11/04 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
JS实现拼图游戏
2021/01/29 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python的动态重新封装的教程
2015/04/11 Python
Python lxml模块安装教程
2015/06/02 Python
python select.select模块通信全过程解析
2017/09/20 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Python对列表的操作知识点详解
2019/08/20 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
C#实现启动一个进程
2016/10/01 面试题
2013年军训通讯稿
2014/02/05 职场文书
中学校庆方案
2014/03/17 职场文书
保护环境建议书400字
2014/05/13 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js