mac下载node,node mac

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: