【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 秒后执行指定的回调函数。

相关推荐
NiNg_1_2343 小时前
npm、yarn、pnpm之间的区别
前端·npm·node.js
XiaoLiuLB4 小时前
ChatGPT Canvas:交互式对话编辑器
人工智能·自然语言处理·chatgpt·编辑器·aigc
余生H4 小时前
前端的全栈混合之路Meteor篇:关于前后端分离及与各框架的对比
前端·javascript·node.js·全栈
Ink5 小时前
从底层看 path.resolve 实现
前端·node.js
奔跑吧邓邓子7 小时前
npm包管理深度探索:从基础到进阶全面教程!
前端·npm·node.js
五花肉村长19 小时前
数据结构-队列
c语言·开发语言·数据结构·算法·visualstudio·编辑器
知否技术19 小时前
为什么nodejs成为后端开发者的新宠?
前端·后端·node.js
嵌入式小能手19 小时前
开发环境搭建之VScode的安装及使用
vscode·编辑器
谢尔登1 天前
【Node.js】worker_threads 多线程
node.js
电子科技圈1 天前
IAR全面支持国科环宇AS32X系列RISC-V车规MCU
人工智能·嵌入式硬件·mcu·编辑器