Node(基本内置模块)

111 阅读3分钟

Node.js 提供了一系列丰富的内置模块,这些模块覆盖了文件系统操作、网络编程、数据处理等多个方面,使得开发者能够高效地进行服务器端开发。

os

  • 提供与操作系统相关的实用方法。
  • 常用方法:
    • os.EOL:一行结束后的分隔符。
    • os.arch():返回一个字符串,表示Node.js进程的CPU架构,如'x64''arm'
    • os.cpus():返回一个数组,包含有关CPU的信息,如模型、速度(以MHz为单位)和核心数。
    • os.freemem():获取系统空闲内存。(可用内存量)
    • os.homedir():返回用户的主目录路径。
    • os.hostname():返回一个字符串,表示计算机的主机名。
    • os.tmpdir():回一个字符串,表示系统的临时文件目录路径。

path

  • 常用方法:
    • basename():获取路径的最后一部分。
    • sep:文件系统中的分隔符(\)
    • delimiter:操作系统特定的路径分隔符(:)
    • dirname():获取路径的目录名
    • extname():获取路径的扩展名
    • join():连接一个或多个路径段(拼接成完整的路径)
    • normalize():规范化路径,解析'..'和'.'等特殊符号
    • relative():计算从one到two的相对路径(右边相对于左边)
    • resolve():使用路径解析一个绝对路径(相对于当前模块下的绝对路径:resolve(__dirname,"./a.js")

url

url模块是一个核心模块,提供了解析、格式化和解析URL的工具。它允许你将URL分解为其组成部分,轻松地操作查询字符串,并以编程方式构建或修改URL。此外,url模块还提供了解析查询字符串的功能。

const URL=require("url")
const url=new URL.URL("https://nodejs.org/dist/latest-v12.x/docs/api/url.html")
console.log(url)

image.png

  • 常用方法:
    • 解析URL
const url = require('url');

    const myUrl = 'http://example.com:3000/pathname?         search=test#hash';
    const parsedUrl = new URL(myUrl);
    console.log(parsedUrl.href);        // 输出完整的URL
    console.log(parsedUrl.protocol);    // 输出协议,如 'http:'
    console.log(parsedUrl.hostname);   // 输出主机名,如
    'example.com'
    console.log(parsedUrl.port);       // 输出端口,如 '3000'
    console.log(parsedUrl.pathname);   // 输出路径,如 '/pathname'
    console.log(parsedUrl.search);     // 输出查询字符串,如 '
    search=test'
    console.log(parsedUrl.hash);       // 输出片段标识符,如
    '#hash'
  • url.format():格式化URL
const formattedUrl = url.format({
  protocol: 'http',
  hostname: 'example.com',
  port: 3000,
  pathname: '/pathname',
  query: { search: 'test' },
  hash: 'hash'
});

console.log(formattedUrl); // 输出 'http://example.com:3000/pathname?search=test#hash'

util

util模块提供了一些实用功能,用于执行常见的任务,比如格式化、调试、流操作等。

  • callbackify:将基于Promise的异步函数转换为传统的回调函数。
const util = require("util");

async function delay(duration = 1000) {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(duration);
        }, duration);
    });
}
const delayCallback =util.callbackify(delay)

//delay(500).then(d => {
//    console.log(d);
//});
delayCallback(500,(err,d) => {
   console.log(d)
})
  • promisify:将回调风格的函数转换为返回Promise的函数。
function delayCallBack(duration, callback) {
    setTimeout(() => {
        callback(null, duration);
    }, duration);
}

const delay = util.promisify(delayCallBack);
//delay(500).then(d => console.log(d));
(async () => {
  const r = await delay(500);
  console.log(r);
})();
  • isDeepStrictEqual:检查两个值是否深度相等(包括它们的内容和类型)。
const { isDeepStrictEqual } = require('util');

const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
const obj3 = { a: 1, b: { c: 3 } };

console.log(isDeepStrictEqual(obj1, obj2)); // 输出: true
console.log(isDeepStrictEqual(obj1, obj3)); // 输出: false
  • inherits:实现JavaScript中的类继承。
const util = require('util');

function BaseClass(name) {
  this.name = name;
}

BaseClass.prototype.sayHello = function() {
  console.log(`Hello, my name is ${this.name}`);
};

function DerivedClass(name) {
  BaseClass.call(this, name);
}

util.inherits(DerivedClass, BaseClass);

const obj = new DerivedClass('Alice');
obj.sayHello();  // 输出: Hello, my name is Alice