前言
所謂“語義化版本號”,就是在版本號中體現出語義,或者說版本號本身是有意義的,不再是隨意給的一個數字。這個規范將版本號中每個數字的意義都做了比較嚴格的說明。當然,其中大部分內容還是沿用我們之前說過的業內的約定,所以,對於有版本號意識的開發者來說,接受這個規范是很容易的。
在移動端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")) { //你的業務邏輯 }
注意:
時間倉促,這個方法僅僅作為普通的常用方法,沒有提供只比較主版本或子版本的方法,而是比較最終的整個版本號。
總結
以上就是這篇文章的全部內容了,希望對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。