Module --- 模块
在 Node.js 中,每个文件都被视为一个独立的模块。Node.js 提供了一个简单的模块系统,可以使用 require
函数来加载其他模块。
javascript
// math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
// app.js
const math = require('./math');
console.log(math.add(2, 3)); // 输出:5
在上面的例子中,math.js
定义了一个加法函数,并通过 module.exports
导出。app.js
则通过 require
函数引入 math.js
模块,并使用其中的 add
函数。
HTTP / HTTPS / HTTP2
Node.js 提供了 http
、https
和 http2
模块,用于创建 HTTP/HTTPS 服务器和客户端。
javascript
// 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 running at http://localhost:3000/');
});
在这个例子中,我们创建了一个 HTTP 服务器,它监听本地的 3000 端口,并对所有请求返回 "Hello World"。
Net --- 网络
net
模块提供了创建基于流的 TCP 或 IPC 的服务器 (net.createServer()
) 和客户端 (net.createConnection()
) 的异步网络 API。
javascript
// TCP 服务器示例
const net = require('net');
const server = net.createServer((socket) => {
socket.end('Goodbye\n');
}).on('error', (err) => {
// 处理错误
throw err;
});
server.listen(() => {
console.log('Opened server on', server.address());
});
这段代码创建了一个 TCP 服务器,它在接收到连接时发送 "Goodbye" 并关闭连接。
Event --- 事件
Node.js 的 events
模块允许创建、触发和监听自定义事件。这是 Node.js 提供的事件驱动架构的基础。
javascript
// 事件示例
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('An event occurred!');
});
myEmitter.emit('event');
在这个例子中,我们创建了一个 MyEmitter
类,它继承自 EventEmitter
。我们监听了一个名为 'event' 的事件,并在触发该事件时打印一条消息。
Stream --- 流
stream
模块用于处理流数据。Node.js 中有四种基本的流类型:Readable
、Writable
、Duplex
和 Transform
。
javascript
// 流示例
const fs = require('fs');
const stream = require('stream');
const readableStream = fs.createReadStream('file.txt');
const writableStream = fs.createWriteStream('file_copy.txt');
readableStream.pipe(writableStream);
这段代码创建了一个可读流和一个可写流,然后使用 .pipe()
方法将可读流中的数据写入可写流,实现文件的复制。
Buffer --- 缓冲区
在 Node.js 中,Buffer
类用于操作二进制数据。它可以在 TCP 流或文件系统操作中使用。
javascript
// Buffer 示例
const buf = Buffer.from('Hello', 'utf8');
console.log(buf.toString('hex')); // 输出:68656c6c6f
console.log(buf.toString('base64')); // 输出:SGVsbG8=
在这个例子中,我们创建了一个包含 "Hello" 的 Buffer
,然后将其转换为十六进制和 Base64 编码的字符串。
Crypto --- 加密
crypto
模块提供了加密功能,包括对密码学散列函数、HMAC、加密、解密、签名和验证的支持。
javascript
// 加密示例
const crypto = require('crypto');
const secret = 'abcdefg';
const hash = crypto.createHmac('sha256', secret)
.update('I love cupcakes')
.digest('hex');
console.log(hash); // 输出:加密后的散列值
这段代码使用 HMAC 和 SHA-256 散列算法创建了一个散列值。
FS --- 文件
fs
模块提供了与文件系统的交互功能,包括读取文件、写入文件、操作目录等。
javascript
// 文件读取示例
const fs = require('fs');
fs.readFile('file.txt', (err, data) => {
if (err) throw err;
console.log(data.toString());
});
这段代码异步地读取 file.txt
文件的内容,并在回调函数中打印。
Timer --- 定时器
Node.js 的 timer
模块提供了定时器功能,如 setTimeout
、setInterval
和 setImmediate
。
javascript
// 定时器示例
setTimeout(() => {
console.log('This message is shown after 3 seconds');
}, 3000);
上面的代码设置了一个定时器,它将在 3 秒后执行指定的回调函数。