Skip to content

基本内置模块 ​

nodejs为我们提供了非常多的API,并且将不同功能的API封装到了不同的模块中,作为内置模块,提供给我们使用,我们这节学习一下基本内置模块的一些常用API

OS模块 ​

API文档

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模块 ​

官方API

⭐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模块后,返回一个对象,这个对象里面除了有一些静态方法外,其中的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));

以笔记为镜,可以知得失