基本内置模块
一、OS1.EOL2.arch3.cpus4.freeman5.homedir6.hostname7.tmpdir
二、path1.path.basename2.path.sep3.path.delimiter4.path.dirname(path)5.path.extname(path)6.path.join([...paths])7.path.normalize(path)8.path.relative(from, to)9.path.resolve([...paths])
三、url四、util1.util.callbackify(original)2.util.promisify(original)3.util.inherits(constructor, superConstructor)4.util.isDeepStrictEqual(val1, val2)
一、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
);
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 :stringext :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
stringWindows 上是 \。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返回: stringpath.normalize() 方法规范化给定的 path,解析 ‘…’ 和 ‘.’ 片段。
8.path.relative(from, to)
from: stringto: 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 路径或路径片段的序列。返回: stringpath.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: FunctionsuperConstructor: 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
));