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 相关文章推荐
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
javascript显示中文日期的方法
Jun 18 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
D3.js实现柱状图的方法详解
Sep 21 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
微信小程序实现日历效果
Dec 28 Javascript
在vue中高德地图引入和轨迹的绘制的实现
Oct 11 Javascript
vue中的.$mount('#app')手动挂载操作
Sep 02 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
由php if 想到的些问题
2008/03/22 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
Javascript 跨域访问解决方案
2009/02/14 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
详解JS函数防抖
2020/06/05 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
学习十八大精神心得体会
2013/12/31 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
先进教师事迹材料
2014/12/16 职场文书
酒店前台辞职书
2015/02/26 职场文书
党支部工作总结2015
2015/04/01 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
《打电话》教学反思
2016/02/22 职场文书