【Node.js从基础到高级运用】二十七、温故知新-Node.js 核心模块

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 提供了 httphttpshttp2 模块,用于创建 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 中有四种基本的流类型:ReadableWritableDuplexTransform

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 模块提供了定时器功能,如 setTimeoutsetIntervalsetImmediate

javascript 复制代码
// 定时器示例
setTimeout(() => {
    console.log('This message is shown after 3 seconds');
}, 3000);

上面的代码设置了一个定时器,它将在 3 秒后执行指定的回调函数。

相关推荐
RoyLin4 小时前
TypeScript设计模式:迭代器模式
javascript·后端·node.js
前端双越老师9 小时前
2025 年还有前端不会 Nodejs ?
node.js·agent·全栈
陈言必行14 小时前
Unity 性能优化 之 编辑器创建资源优化( 工作流 | 场景 | 预制体)
unity·编辑器·游戏引擎
人工智能训练师17 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Seveny0717 小时前
pnpm相对于npm,yarn的优势
前端·npm·node.js
huangql52021 小时前
npm 发布流程——从创建组件到发布到 npm 仓库
前端·npm·node.js
CAE虚拟与现实1 天前
VSCode中的下载VSIX是指什么?
ide·vscode·编辑器
荣达1 天前
koa洋葱模型理解
前端·后端·node.js
CAE虚拟与现实1 天前
VSCode官方汉化包
ide·vscode·编辑器·vscode汉化
CAE虚拟与现实1 天前
VSCode创建Python项目和运行py文件
ide·vscode·编辑器