mac下载node,node mac
如何使用node获取mac系统版本?下面这篇文章介绍了使用node优雅获取mac系统版本的方法,希望对你有所帮助!
node.js速度课程简介:进入学习
今天突然遇到一个兼容性要求,要求根据macOS的不同版本进行不同的兼容性处理。
没想到,看似简单的需求,中间经历了一些波折,但最终还是解决了问题。
这里记录下解题的过程,也方便其他有类似需求的同学参考。
获取系统类型
由于mac系统需要进行兼容性处理,所以首先要区分系统类型。好在nodejs提供了相关的API,所以你可以通过使用os.platform()直接获取系统类型。
从“操作系统”导入{平台};
console.log(平台());//达尔文值得一提的是,macOS对应的名字不是macOS而是darwin。
除了os包,我们还可以获得系统类型,也可以通过process.platform获得
从“进程”导入{平台};
console.log(平台);//达尔文
获取系统版本
很多熟悉node的同学都会在这个时候发言。可以通过os.release()快速获取系统版本。但是当你执行os.release()时,你会发现它的结果并不符合常规认知。
比如我的系统版本是12.0.1,但是os.release()的执行结果是21.1.0。
查看node的官方文档可以发现,node是通过uname(3)来决定操作系统的,所以执行结果与常规认知相反。
通过命令行获取系统版本
既然os.release()获取的系统版本很难理解,有没有直接获取实际系统版本号的方案?
mac上有sw_vers命令,可以直接获取系统信息。
$ sw_vers
产品名称:macOS
产品版本:12.0.1
Build: 21a559可以看出sw_vers命令直接获取了系统版本:12.0.1。
如果不需要其他系统信息,我们可以通过添加命令行参数,过滤命令行结果,直接获取系统版本。
$ SW _ vers-产品版本
12.0.1由于命令行不区分大小写,因此命令行参数也不区分大小写。也可以写-productversion或-ProductVersion。
现在我们知道了如何编写命令行,我们只需要在node中调用命令行。
从“child_process”导入{ exec sync };
console . log(execSync( SW _ vers-product version ,{ encoding: utf-8 }));//12.0.1
优雅地获取系统版本
通过节点子进程执行命令行命令可以获得正确的系统版本。但是,这种方法有性能缺陷,它需要创建一个子进程来执行命令行。与os.release()方法相比,代价很大。
之前使用os.release()的问题是,返回的结果与常规认知相反,但它的结果其实是正确的,只需要映射一次。
因此,通过os.release()与映射表的匹配,可以优雅地获得系统版本。
从“os”导入OS;
const macVersionMap=新地图([
[21,[蒙特雷, 12]],
[20,[大苏尔, 11]],
[19,[卡特琳娜, 10.15]],
[18,[莫哈维, 10.14]],
[17,[高塞拉, 10.13]],
[16,[塞拉, 10.12]],
[15日,[El Capitan , 10.11]],
[14,[约塞米蒂, 10.10]],
[13,[小牛, 10.9]],
[12,[山狮, 10.8]],
[11,[狮子, 10.7]],
[10,[雪豹, 10.6]],
[9,[豹, 10.5]],
[8,[老虎, 10.4]],
[7,[黑豹, 10.3]],
[6,[捷豹, 10.2]],
[5,[彪马, 10.1]],
]);
const getMacRelease=(release:string)={
const macRelease=release?os.release()。
const first release version=Number(MAC release . split( . ))[0]);
const [name,version]=MAC version map . get(first release version) [
未知,
,
];
返回{
姓名,
版本,
};
};
console . log(getmac release())//12为了让mac在新系统发布后更容易识别,新系统版本名识别为Unknow,新版本识别为空字符串。
这是一个学习移动模型的评分平台。如果版本为空,则默认为高配版本,不影响低配版本的兼容性。
现在,我们可以通过node优雅地获得系统版本。
更多关于node的信息,请访问:nodejs教程!以上是如何利用node获取mac系统版本的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。