跳到主要内容

常用nodejs内置模块

当涉及到 Node.js 的内置模块时,以下是一些主要的内置模块以及它们的简要介绍:

  1. fs (File System):用于文件系统操作,包括文件读取、写入、创建、删除、目录操作等。

  2. http:用于创建 HTTP 服务器和客户端,以构建 Web 应用程序。

  3. https:与 HTTP 模块类似,但用于创建 HTTPS 服务器和客户端,提供安全的通信。

  4. path:用于处理文件和目录路径,包括路径拼接、解析、规范化等。

  5. events:提供了事件驱动的编程,允许对象触发和监听事件。

  6. os (Operating System):提供了操作系统相关的信息,如 CPU、内存、网络接口等。

  7. util:包含实用工具函数,用于处理和转换数据。

  8. querystring:用于解析和序列化 URL 查询字符串。

  9. url:用于处理 URL,包括解析、格式化和解析查询参数。

  10. crypto:提供了加密和哈希功能,用于数据安全和认证。

  11. child_process:用于创建和控制子进程,允许执行外部命令。

  12. stream:用于处理流式数据,包括可读流和可写流。

  13. http2:用于创建 HTTP/2 服务器和客户端,提供更高效的数据传输。

  14. zlib:用于压缩和解压数据,包括 Gzip 和 Deflate 压缩。

  15. cluster:用于创建多进程的应用程序,以充分利用多核 CPU。

  16. readline:用于创建交互式命令行界面,从用户获取输入。

  17. dns:用于进行 DNS 查询,包括解析主机名和 IP 地址。

  18. console:用于输出日志和调试信息,是全局对象。

  19. assert:用于编写测试用例和断言检查,用于测试和验证代码的正确性。

  20. buffer:用于处理二进制数据,包括创建和转换缓冲区。

这些内置模块涵盖了广泛的功能领域,从文件操作到网络通信、数据压缩、多进程处理、事件处理和测试等。使用这些内置模块,你可以构建多样化的 Node.js 应用程序以满足不同的需求。根据你的项目需求,选择适当的内置模块是很重要的。

Node.js 提供了许多内置模块,用于执行各种任务,从文件操作到网络通信,以及其他核心功能。以下是一些常用的 Node.js 内置模块,并附带简短的代码示例来演示它们的用途:

  1. fs (File System):用于文件系统操作,如读取、写入、创建和删除文件。以下是一个读取文件的示例:
const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
  1. http:用于创建 HTTP 服务器和客户端,以构建 Web 应用程序。以下是一个简单的 HTTP 服务器示例:
const http = require('http');

const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!\n');
});

server.listen(3000, () => {
console.log('Server is running on port 3000');
});
  1. path:用于处理文件和目录路径。以下是一个路径拼接示例:
const path = require('path');

const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath);
  1. events:提供了事件驱动的编程,允许对象触发和监听事件。以下是一个简单的事件示例:
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('Event occurred');
});

myEmitter.emit('event');
  1. os (Operating System):提供了操作系统相关的信息,如 CPU、内存和网络接口等。以下是一个获取操作系统信息的示例:
const os = require('os');

console.log('CPU Architecture:', os.arch());
console.log('Total Memory (bytes):', os.totalmem());
  1. util:包含实用工具函数,用于处理和转换数据。以下是一个使用 util.promisify 将回调函数转换为 Promise 的示例:
const util = require('util');
const fs = require('fs');

const readFileAsync = util.promisify(fs.readFile);

readFileAsync('example.txt', 'utf8')
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
  1. url:用于解析和构建 URL,包括查询参数的解析。以下是一个 URL 解析的示例:
const url = require('url');

const urlString = 'https://www.example.com/path?query=example';
const parsedUrl = url.parse(urlString, true);

console.log(parsedUrl.hostname);
console.log(parsedUrl.pathname);
console.log(parsedUrl.query);
  1. crypto:提供加密和哈希功能,用于数据安全和认证。以下是一个使用 crypto 模块进行哈希的示例:
const crypto = require('crypto');

const secret = 'mySecret';
const hash = crypto.createHmac('sha256', secret).update('Hello, World').digest('hex');

console.log(hash);
  1. querystring:用于解析和序列化 URL 查询字符串。以下是一个查询字符串解析的示例:
const querystring = require('querystring');

const queryString = 'name=John&age=30';
const parsedQuery = querystring.parse(queryString);

console.log(parsedQuery.name);
console.log(parsedQuery.age);
  1. child_process:用于创建和控制子进程,允许执行外部命令。以下是一个使用 child_process 模块执行外部命令的示例:
const { exec } = require('child_process');

exec('ls', (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
});
  1. stream:用于处理流式数据,包括可读流和可写流。以下是一个可读流示例:
const fs = require('fs');

const readStream = fs.createReadStream('input.txt');
readStream.on('data', data => {
console.log('Read chunk:', data);
});
  1. dns:用于进行 DNS 查询,包括解析主机名和 IP 地址。以下是一个 DNS 查询的示例:
const dns = require('dns');

dns.lookup('example.com', (err, address, family) => {
console.log('IP Address:', address);
});
  1. http2:用于创建 HTTP/2 服务器和客户端,提供更高效的数据传输。以下是一个简单的 HTTP/2 服务器示例:
const http2 = require('http2');

const server = http2.createSecureServer({ /* 配置选项 */ });

server.on('stream', (stream, headers) => {
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<html><body>Hello, HTTP/2!</body></html>');
});

server.listen(8443);
  1. zlib:用于压缩和解压数据,包括 Gzip 和 Deflate 压缩。以下是一个使用 zlib 模块进行数据压缩的示例:
const zlib = require('zlib');
const fs = require('fs');

const input = fs.createReadStream('input.txt');
const output = fs.createWriteStream('input.txt.gz');

input.pipe(zlib.createGzip()).pipe(output);
  1. cluster:用于创建多进程的应用程序,以充分利用多核 CPU。以下是一个使用 cluster 模块创建多进程服务器的示例:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello, Cluster!');
}).listen(8000);
}
  1. readline:用于创建交互式命令行界面,从用户获取输入。以下是一个使用 readline 模块创建简单 CLI 的示例:
const readline = require('readline');

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.question('What is your name? ', (answer) => {
console.log(`Hello, ${answer}!`);
rl.close();
});
  1. buffer:用于处理二进制数据,包括创建和转换缓冲区。缓冲区通常用于处理文件、网络数据和图像等。
const buffer = Buffer.from('Hello, World', 'utf8');
console.log(buffer.toString());
  1. events:提供了事件和观察者模式的实现,用于处理异步事件。前面已经提到了 events 模块,它用于自定义事件的触发和监听。
const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('event', () => {
console.log('Event occurred');
});

myEmitter.emit('event');
  1. console:用于输出日志和调试信息。console 模块是 Node.js 内置的全局对象,可以用于输出各种类型的信息。
console.log('This is a log message');
console.error('This is an error message');
  1. assert:用于编写测试用例和断言检查。assert 模块允许你编写测试用例,并在测试期间检查条件是否为真。
const assert = require('assert');
assert.strictEqual(1 + 1, 2, '1 + 1 should equal 2');