一、OS
1.EOL
- string
操作系统特定的行末标志。
在 POSIX 上是 \n。
在 Windows 上是 \r\n。
2.arch
- string
返回为其编译 Node.js 二进制文件的操作系统的 CPU 架构。 可能的值有:‘arm’、 ‘arm64’、 ‘ia32’、 ‘mips’、 ‘mipsel’、 ‘ppc’、 ‘ppc64’、 ‘s390’、 ‘s390x’、 ‘x32’ 和 ‘x64’。
返回的值等价于 process.arch。
3.cpus
- object
返回一个对象数组,其中包含有关每个逻辑 CPU 内核的信息。
const os = require("os");
console.log(os.cpus().length);//CPU核数
4.freeman
- integer
以整数的形式返回空闲的系统内存量(以字节为单位)。
const os = require("os");
console.log(os.freemem() / 2 ** 30);
5.homedir
- string>
返回当前用户的主目录的字符串路径。
6.hostname
- string
以字符串的形式返回操作系统的主机名。
7.tmpdir
- string
以字符串的形式返回操作系统的默认临时文件目录。
二、path
1.path.basename
- path :string
- ext :string可选的文件扩展名。
- 返回: string
const path = require("path");
const basename = path.basename("F:\\Java\\day04.doc");
console.log(basename);
const path = require("path");
const basename = path.basename("F:\\Java\\day04.doc",".doc");
console.log(basename);
匹配不到则返回原文件名
const path = require("path");
const basename = path.basename("F:\\Java\\day04.doc",".docx");
console.log(basename);
2.path.sep
- string
- Windows 上是 \。
- POSIX 上是 /。
提供平台特定的路径片段分隔符
const path = require("path");
console.log(path.sep);
3.path.delimiter
- 提供平台特定的路径定界符:
- ; 用于 Windows
- : 用于 POSIX
每个系统的路径定界符不一样,用path.delimiter来分割。
const path = require("path");
console.log(process.env.PATH.split(path.delimiter));
4.path.dirname(path)
- path: string
- 返回: string
- 返回 path 的目录名
const path = require("path");
const dir = path.dirname('a/b/c/d.doc');
console.log(dir);
5.path.extname(path)
- path: string
- 返回: string
const path = require("path");
const ext = path.extname('a/b/c/d.js');
console.log(ext);
如果没有后缀名则返回空字符串。
6.path.join([…paths])
- …paths: string 路径片段的序列。
- 返回: string
- 将所有给定的 path 片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径。
const path = require("path");
const basePath = "a/b";
const fullpath = path.join(basePath, "../", "d.js");
console.log(fullpath);
可以灵活运用。
7.path.normalize(path)
- path: string
- 返回: string
- path.normalize() 方法规范化给定的 path,解析 ‘…’ 和 ‘.’ 片段。
8.path.relative(from, to)
- from: string
- to: string
- 返回: string
- 根据当前工作目录返回 from 到 to 的相对路径。
const path = require("path");
const rel = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
console.log(rel);
9.path.resolve([…paths])
- …paths: string 路径或路径片段的序列。
- 返回: string
- path.resolve() 方法会将路径或路径片段的序列解析为绝对路径。
const path = require("path");
const absPath = path.resolve(__dirname, "./a.js");
console.log(absPath);
三、url
const URL = require("url");
const url = new URL.URL("https://nodejs.org:80/a/b/c?t=3&u=5#abc");
console.log(url);
console.log(url.searchParams.has("a"));
console.log(url.searchParams.has("t"));
console.log(url.searchParams.get("t"));
const obj = {
href: "https://nodejs.org:80/a/b/c?t=3&u=5#abc",
origin: "https://nodejs.org:80",
protocol: "https:",
username: "",
password: "",
host: "nodejs.org:80",
hostname: "nodejs.org",
port: "80",
pathname: "/a/b/c",
search: "?t=3&u=5",
hash: "#abc"
};
const url = URL.format(obj);
console.log(url);
四、util
1.util.callbackify(original)
- original: Function async 异步函数。
- 返回: Function 传统回调函数。
- 将 async 异步函数(或者一个返回值为 Promise 的函数)转换成遵循异常优先的回调风格的函数
const util = require("util");
async function delay(duration = 1000) {
return new Promise(resolve => {
setTimeout(() => {
resolve(duration);
}, duration);
});
}
delay(500).then(d=>{
console.log(d);
})
const delayCallback = util.callbackify(delay);
delayCallback(500, (err, d) => {
console.log(d);
});
2.util.promisify(original)
- original: Function
- 返回: Function
- 传入一个遵循常见的错误优先的回调风格的函数(即以 (err, value) => … 回调作为最后一个参数),并返回一个返回 promise 的版本。
function delayCallBack(duration, callback) {
setTimeout(() => {
callback(null, duration);
}, duration);
}
const delay = util.promisify(delayCallBack);
delay(500).then(d=>console.log(d));
结合es7的async等
(async () => {
const r = await delay(500);
console.log(r);
})();
3.util.inherits(constructor, superConstructor)
- constructor: Function
- superConstructor: Function
- 不建议使用 util.inherits()。 请使用 ES6 的 class 和 extends 关键词获得语言层面的继承支持
4.util.isDeepStrictEqual(val1, val2)
深度严格比较。
const obj1 = {
a: 1,
b: {
c: 3,
d: {
e: 5
}
}
};
const obj2 = {
a: 1,
b: {
c: 3,
d: {
e: 5,
g: 6
}
}
};
console.log(util.isDeepStrictEqual(obj1, obj2));