javascript比較語(yǔ)義化版本號(hào)的實(shí)現(xiàn)代碼
前言
所謂“語(yǔ)義化版本號(hào)”,就是在版本號(hào)中體現(xiàn)出語(yǔ)義,或者說(shuō)版本號(hào)本身是有意義的,不再是隨意給的一個(gè)數(shù)字。這個(gè)規(guī)范將版本號(hào)中每個(gè)數(shù)字的意義都做了比較嚴(yán)格的說(shuō)明。當(dāng)然,其中大部分內(nèi)容還是沿用我們之前說(shuō)過(guò)的業(yè)內(nèi)的約定,所以,對(duì)于有版本號(hào)意識(shí)的開(kāi)發(fā)者來(lái)說(shuō),接受這個(gè)規(guī)范是很容易的。
在移動(dòng)端APP第三方開(kāi)發(fā)中經(jīng)常會(huì)碰到一些因?yàn)榘姹静煌斐蒍S SDK或JS API差異或支持的問(wèn)題。對(duì)于移動(dòng)前端來(lái)說(shuō),在實(shí)際第三方開(kāi)發(fā)中可能會(huì)需要根據(jù)APP的版本號(hào)做一些特殊的業(yè)務(wù)邏輯處理。
語(yǔ)義化版本號(hào)
一般語(yǔ)義化版本號(hào)通常定義是這樣的:
Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]] 主版本號(hào) .子版本號(hào) [.修正版本號(hào) [.編譯版本號(hào) ]]
定界符一般使用.
語(yǔ)義化版本號(hào)比較方法
這樣我們可以做版本號(hào)比較,這里提供一個(gè)粗陋的方法:
/** * 版本比較 VersionCompare * @param {String} currVer 當(dāng)前版本. * @param {String} promoteVer 比較版本. * @return {Boolean} false 當(dāng)前版本小于比較版本返回 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; };
使用也很簡(jiǎn)單:
VersionCompare("6.3","5.2.5"); // false. VersionCompare("6.1", "6.1"); // false. VersionCompare("6.1.5", "6.2"); // true.
這里需要注意的是根據(jù)我自己的業(yè)務(wù)邏輯當(dāng)前版本小于比較版本返回 true。你可以根據(jù)自己的業(yè)務(wù)邏輯修改代碼。
比如我們要獲取微信的版本號(hào),可以這樣寫:
var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i); var currVer = wechatInfo[1]; if (VersionCompare(currVer, "6.2.5")) { //你的業(yè)務(wù)邏輯 }
注意:
時(shí)間倉(cāng)促,這個(gè)方法僅僅作為普通的常用方法,沒(méi)有提供只比較主版本或子版本的方法,而是比較最終的整個(gè)版本號(hào)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
- js獲取微信版本號(hào)的方法
- js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼
- 用javascript判斷IE版本號(hào)簡(jiǎn)單實(shí)用且向后兼容
- js 瀏覽器版本及版本號(hào)判斷函數(shù)2009年
- javascript獲取flash版本號(hào)的方法
- 通用javascript代碼判斷版本號(hào)是否在版本范圍之間
- javascript 瀏覽器類型和版本號(hào)檢測(cè)代碼(兼容多瀏覽器)
- 如何使用php腳本給html中引用的js和css路徑打上版本號(hào)
- js判斷游覽器類型及版本號(hào)的代碼
- js判斷主流瀏覽器類型和版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼
相關(guān)文章
JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)Stack過(guò)程詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)Stack過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03JavaScript事件監(jiān)聽(tīng)器詳細(xì)介紹
這篇文章主要介紹了JavaScript事件監(jiān)聽(tīng)器詳細(xì)介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-098個(gè)JavaScript中高階函數(shù)的運(yùn)用分享
高階函數(shù)是指以函數(shù)作為參數(shù)的函數(shù),并且可以將函數(shù)作為結(jié)果返回的函數(shù)。本文整理了8個(gè)JavaScript中高階函數(shù)的運(yùn)用,需要的可以參考一下2023-04-04關(guān)于UTF-8的客戶端用AJAX方式獲取GB2312的服務(wù)器端亂碼問(wèn)題的解決辦法
客戶端是UTF-8編碼,這也是現(xiàn)在大家公認(rèn)的標(biāo)準(zhǔn)編碼在這種情況下,實(shí)用AJAX異步獲取GB2312編碼的服務(wù)器端信息時(shí),不可避免的要遇到漢字亂碼問(wèn)題2010-11-11值得分享的輕量級(jí)Bootstrap Table表格插件
這篇文章為大家分享了輕量級(jí)Bootstrap Table表格插件,以表格的形式顯示的數(shù)據(jù),支持單選,復(fù)選框,排序,分頁(yè),顯示/隱藏列等操作,感興趣的小伙伴們可以參考一下2016-05-05詳解webpack的文件監(jiān)聽(tīng)實(shí)現(xiàn)(熱更新)
這篇文章主要介紹了詳解webpack的文件監(jiān)聽(tīng)實(shí)現(xiàn)(熱更新),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09