一、OS模块 查看操作系统信息
const os = require("os");
console.log(os);
console.log(os.EOL); //换行符
console.log(os.cpus().length); //内核 8核
console.log(os.freemem()/2**30); //剩余内存 多少kb
console.log(os.homedir()); //用户目录 C:\Users\Lenovo
console.log(os.hostname()); //主机名 DESKTOP-QILT1G7
console.log(os.tmpdir()); //文件目录 C:\Users\Lenovo\AppData\Local\Temp
二、path模块 用于处理文件和目录的路径
const path = require("path");
console.log(path.basename("a/b/c.html")) //文件名
console.log(path.delimiter) //操作系统路径分隔符 一个路径与另一个路径
console.log(__dirname); //模块路径
console.log(path.dirname(__filename)) //模块路径
console.log(path.extname(__filename)) //后缀名
console.log(path.join(__filename)); //加入路径
console.log(path.normalize('eqweq/eqwe/eqweq/eqw')) //转换成正常路径
console.log(path.relative("a/b/c/c.html","a/b/d/d.html")); //将后面的路径转换为前面路径的相对路径 ../../d/d.html
console.log(path.resolve(__dirname,"./OS.js")); //路径拼接
1.pathname
path.basename()
方法会返回 path
的最后一部分,类似于 Unix 的 basename
命令。 尾部的目录分隔符会被忽略,参见 path.sep
。
path.basename('/目录1/目录2/文件.html');
// 返回: '文件.html'
path.basename('/目录1/目录2/文件.html', '.html');
// 返回: '文件'
2.dirname
path.dirname()
方法会返回 path
的目录名,类似于 Unix 的 dirname
命令。 尾部的目录分隔符会被忽略,参见 path.sep
。
path.dirname('/目录1/目录2/目录3');
// 返回: '/目录1/目录2'
3.delimiter
提供平台特定的路径定界符:
;
用于 Windows:
用于 POSIX
例如,在 POSIX 上:
console.log(process.env.PATH);
// 打印: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
process.env.PATH.split(path.delimiter);
// 返回: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
在 Windows 上:
console.log(process.env.PATH);
// 打印: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
process.env.PATH.split(path.delimiter);
// 返回: ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']
三、URL模块 模块用于处理与解析 URL
const url = require('url');
使用 WHATWG 的 API 解析 URL 字符串:转为url对象
const myURL =new URL('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');
使用传统的 API 解析 URL 字符串:转为url对象
const url = require('url');
const myURL =url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');
url对象
URL {
href: 'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash',
origin: 'https://sub.host.com:8080',
protocol: 'https:',
username: 'user',
password: 'pass',
host: 'sub.host.com:8080',
hostname: 'sub.host.com',
port: '8080',
pathname: '/p/a/t/h',
search: '?query=string',
searchParams: URLSearchParams { 'query' => 'string' },
hash: '#hash'
}
四、Util 模块
node中的回调模式
(err,data)=>{} err错误,data回调数据
1.callbackify(promise) promise转回调
const util = require("util");
async function delay(duration = 1000) {
return new Promise(resolve => {
setTimeout(() => {
resolve(duration);
}, duration);
});
}
const delayCallback = util.callbackify(delay); //将promise转为回调
delayCallback(1500, (err, d) => {
console.log(d);
});
2.promisify(callback) callback转promise
function delayCallBack(duration, callback) {
setTimeout(() => {
callback(null, duration);
}, duration);
}
const delay = util.promisify(delayCallBack);//将回调转为promise
(async () => {
const r = await delay(500);
console.log(r);
})();
3.isDeepScriptEqual(obj1,,obj2) 判断对象是否相等
const obj1 = {
a: 1,
b: {
c: 3,
d: {
e: 5
}
}
};
const obj2 = {
a: 1,
b: {
c: 3,
d: {
e: 5,
g: 6
}
}
};
const obj3 = {
a: 1,
b: {
c: 3,
d: {
e: 5
}
}
};
console.log(util.isDeepStrictEqual(obj1, obj2)); //false
console.log(util.isDeepStrictEqual(obj1, obj3)); //true