os.platform()
1. 前言
本系列课程对非功能性函数内容安排中,将插入一些在生产过程中可能会用到对应函数的例子。
本节课将会引导大家学习了解:
os.platform()
、process.platform
的使用方法os.platform()
、process.platform
在生产中的作用
学习完本节课程后,应该具有:
- 使用
os
模块获取当前系统平台标识,并通过判断,实现不同需求的能力
2. os.platform()
os.platform()
可以获取标识操作系统平台的字符串。 该值在编译时设置。 可能的值有 'aix'、 'darwin'、 'freebsd'、 'linux'、 'openbsd'、 'sunos' 和 'win32'。
以下提供一个对应表格。
2.1 对应表格
标识 | 系统 |
---|---|
aix | AIX 系统 |
darwin | 苹果 macos |
freebsd | FreeBSD 系统 |
linux | linux 系统 |
openbsd | openbsd 系统 |
sunos | Solaris 系统或 sunos 内核 |
win32 | Windows 系统(64位系统的标识也是 win32) |
2.2 代码例子
我们先来执行下面这段代码:
js
// 引入 os 模块
const os = require('os');
// 打印结果
console.log(os.platform());
windows 结果:
shell
win32
macos 结果:
shell
darwin
Tips:Node.js 有一些原生 API 和 第三方库 API 在不同系统中有不同的表现形式,现在用
os.platform()
区分即可。
2.3 process.platform
Node.js 在运行时,会将系统平台信息写入到 process.platform
参数中。
我们可以用以下语句获取:
js
console.log(process.platform);
windows 结果:
shell
win32
macos 结果:
shell
darwin
2.4 可信度
在这不禁怀疑该值的可信度,试一下修改:(macos 系统为例)
js
process.platform = "noneJS_OS";
console.log(process.platform);
结果:
shell
darwin
Tips:对
process.platform
修改不会生效,process.platform
值可信。
既然如此,我们试着修改一下 os.platform()
:(macos 系统为例)
js
const os = require('os');
os.platform = function() {
return "noneJS_OS"
};
console.log(os.platform());
结果:
shell
noneJS_OS
Tips:通过重写
os.platform()
函数,能修改这个函数的返回值,使得获取的系统平台 不可信。
通过上面的结果可知,在实际情况下,使用 process.platform
更好。
但 process
参数能被覆盖,所以养成良好的命名习惯,避免使用 Node.js 自身变量名、避免重写 API 十分重要。
3. 生产中的作用
-
用法一:
区分不同系统以适配功能,如前文提到的
os.freemem()
在macos
上表现 异常,现在我们能区分出数据是否可信了:jsconst os = require('os'); if (os.platform() === 'darwin') { console.log('您在使用 macos 系统,空闲内存暂不能估计。'); } else { console.log('空闲内存:', os.freemem()); }
Tips:可以使用
process.platform
代替os.platform()
。
4. 小结
本节课程我们主要学习了 os.platform()、process.platform 及其在生产上的用法。
重点如下:
-
重点1
使用
os.platform()
、process.platform
可以针对不同的系统平台实现不同的需求。 -
重点2
养成良好的命名习惯,避免重写 API,或覆盖参数。