常用nodejs内置模块
当涉及到 Node.js 的内置模块时,以下是一些主要的内置模块以及它们的简要介绍:
-
fs (File System):用于文件系统操作,包括文件读取、写入、创建、删除、目录操作等。
-
http:用于创建 HTTP 服务器和客户端,以构建 Web 应用程序。
-
https:与 HTTP 模块类似,但用于创建 HTTPS 服务器和客户端,提供安全的通信。
-
path:用于处理文件和目录路径,包括路径拼接、解析、规范化等。
-
events:提供了事件驱动的编程,允许对象触发和监听事件。
-
os (Operating System):提供了操作系统相关的信息,如 CPU、内存、网络接口等。
-
util:包含实用工具函数,用于处理和转换数据。
-
querystring:用于解析和序列化 URL 查询字符串。
-
url:用于处理 URL,包括解析、格式化和解析查询参数。
-
crypto:提供了加密和哈希功能,用于数据安全和认证。
-
child_process:用于创建和控制子进程,允许执行外部命令。
-
stream:用于处理流式数据,包括可读流和可写流。
-
http2:用于创建 HTTP/2 服务器和客户端,提供更高效的数据传输。
-
zlib:用于压缩和解压数据,包括 Gzip 和 Deflate 压缩。
-
cluster:用于创建多进程的应用程序,以充分利用多核 CPU。
-
readline:用于创建交互式命令行界面,从用户获取输入。
-
dns:用于进行 DNS 查询,包括解析主机名和 IP 地址。
-
console:用于输出日志和调试信息,是全局对象。
-
assert:用于编写测试用例和断言检查,用于测试和验证代码的正确性。
-
buffer:用于处理二进制数据,包括创建和转换缓冲区。
这些内置模块涵盖了广泛的功能领域,从文件操作到网络通信、数据 压缩、多进程处理、事件处理和测试等。使用这些内置模块,你可以构建多样化的 Node.js 应用程序以满足不同的需求。根据你的项目需求,选择适当的内置模块是很重要的。
Node.js 提供了许多内置模块,用于执行各种任务,从文件操作到网络通信,以及其他核心功能。以下是一些常用的 Node.js 内置模块,并附带简短的代码示例来演示它们的用途:
- fs (File System):用于文件系统操作,如读取、写入、创建和删除文件。以下是一个读取文件的示例:
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
- 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');
});
- path:用于处理文件和目录路径。以下是一个路径拼接示例:
const path = require('path');
const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath);
- events:提供了事件驱动的编程,允许对象触发和监听事件。以下是一个简单的事件示例:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('Event occurred');
});
myEmitter.emit('event');
- os (Operating System):提供了操作系统相关的信息,如 CPU、内存和网络接口等。以下是一个获取操作系统信息的示例:
const os = require('os');
console.log('CPU Architecture:', os.arch());
console.log('Total Memory (bytes):', os.totalmem());
- 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);
});
- 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);
- crypto:提供加密和哈希功能,用于数据安全和认证。以下是一个使用 crypto 模块进行哈希的示例:
const crypto = require('crypto');
const secret = 'mySecret';
const hash = crypto.createHmac('sha256', secret).update('Hello, World').digest('hex');
console.log(hash);
- 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);
- 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}`);
});
- stream:用于处理流式数据,包括可读流和可写流。以下是一个可读流示例:
const fs = require('fs');
const readStream = fs.createReadStream('input.txt');
readStream.on('data', data => {
console.log('Read chunk:', data);
});
- dns:用于进行 DNS 查询,包括解析主机名和 IP 地址。以下是一个 DNS 查询的示例:
const dns = require('dns');
dns.lookup('example.com', (err, address, family) => {
console.log('IP Address:', address);
});
- 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);
- 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);
- 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);
}
- 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();
});
- buffer:用于处理二进制数据,包括创建和转换缓冲区。缓冲区通常用于处理文件、网络数据和图像等。
const buffer = Buffer.from('Hello, World', 'utf8');
console.log(buffer.toString());
- events:提供了事件和观察者模式的实现,用于处理异步事件。前面已经提到了
events
模块,它用于自定义事件的触发和监听。
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {
console.log('Event occurred');
});
myEmitter.emit('event');
- console:用于输出日志和调试信息。
console
模块是 Node.js 内置的全局对象,可以用于输出各种类型的信息。
console.log('This is a log message');
console.error('This is an error message');
- assert:用于编写测试用例和断言检查。
assert
模块允许你编写测试用例,并在测试期间检查条件是否为真。
const assert = require('assert');
assert.strictEqual(1 + 1, 2, '1 + 1 should equal 2');