基本内置模块
nodejs为我们提供了非常多的API,并且将不同功能的API封装到了不同的模块中,作为内置模块,提供给我们使用,我们这节学习一下基本内置模块的一些常用API
OS模块
os.EOL
全称为end of line
由于linux和Windows的换行标记不一样,Linux里的换行标记为\n,而windows里面的换行标记为\r\n,EOL就可以帮助我们解决这个换行标记不一样的问题,他会根据系统自动判断需要的是哪个换行标记.
javascript
const os = require("os");
console.log(os.EOL);//输出一个换行符os.arch()
这个函数可以获取CPU的架构名,目前架构名主要是x32和x64
javascript
const os = require("os");
console.log(os.arch());//x64⭐os.cpus()
返回一个数组,保存了CPU每一个核心的信息
javascript
const os = require("os");
console.log(os.cpus());
os.freemem()
可以得到当前剩余的内存,以字节数输出
os.homedir()
可以获得用户路径,可以看一下输出示例

os.hostname()
可以用来获取主机名,也就是计算机的名字
⭐os.tmpdir()
可以获取操作系统的临时文件目录,有时候我们需要临时保存一些文件,就保存到这里
path模块
⭐path.basename()
传入一个路径,获取文件名
filename = dirname + basename
javascript
const path = require("path");
console.log(path.basename("./dkafjl/dsaf/adf.js"));//输出adf.js
console.log(path.basename("./dkafjl/dsaf/adf.js",".js"));//输出adf,第二个参数用来匹配后缀名,如果匹配上了,去掉后缀名实际上path模块里面的函数都是用来操作路径字符串的,并不回去看路径是否存在
path.sep
获取当前操作系统的路径分隔符,windows下是/
path.delimiter
也是路径分隔符,实际上是多个路径的分隔符,可以在环境变量中看到,windows下是分号分割
⭐path.dirname()
获取dirname,也就是去掉basename的目录,传入filename,给你dirname,这里拿到的是模块的路径,不是控制台的路径
filename = dirname + basename
⭐path.extname()
返回路径的后缀名,basename就是文件名+后缀名
⭐path.join()
传入多个参数,将多个路径拼接成一个完整的路径,支持../返回上级目录
path.normalize()
给一个完整的路径,规范化一个路径,也就是复合操作系统要求的标准路径
path.relative()
传入两个路径,得到第二个路径相对与第一个路径的相对路径
⭐path.resolve()
传入一个相对路径,返回绝对路径,这个相对路径是相对于控制台的路径转换的
当然也可以传入绝对路径
可以传入多个路径,他会将这些路径拼接后转化为绝对路径
url模块
url模块是对url进行处理的,也就是网址进行处理,这里也是字符串处理,和真实的网址没有任何关系
引入url模块后,返回一个对象,这个对象里面除了有一些静态方法外,其中的URL方法是一个g构造函数,我们可以通过这个构造函数去构造出一个URL对象


这个构造出来的URL对象里面有很多信息可以直接用
我们也可以用URL的format静态方法,传入一个URL对象,返回URL地址的字符串,这样就可以实现URL地址和URL对象的转换
util模块
util.callbackify()
这个函数可以把async的异步函数转换为回调函数,返回一个回调模式的函数
javascript
async function delay(duration = 1000) {
return new Promise(resolve => {
setTimeout(() => {
resolve(duration);
}, duration);
});
}
const delayCallback = util.callbackify(delay);
delayCallback(500, (err, d) => {
console.log(d);
});⭐util.promisify()
将一个回调函数转化为异步函数
javascript
function delayCallBack(duration, callback) {
setTimeout(() => {
callback(null, duration);
}, duration);
}
const delay = util.promisify(delayCallBack);
(async () => {
const r = await delay(500);
console.log(r);
})();util.inherit()
用来继承,现在有了ES6,继承都通过extend关键字实现
⭐util.isDeepStrictEqual()
将两个对象进行深度严格比较
javascript
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));