Node.js 内置模块简介(带示例)

目录

[1. fs(文件系统)模块](#1. fs(文件系统)模块)

[2. http 模块](#2. http 模块)

[3. path 模块](#3. path 模块)

[4. os 模块](#4. os 模块)

[5. events 模块](#5. events 模块)

[6. crypto 模块](#6. crypto 模块)


1. fs(文件系统)模块

fs 模块提供了与文件系统进行交互的功能,包括文件的读写、删除、重命名等操作。它有同步和异步两种操作方式,异步操作能避免阻塞事件循环,在处理大量文件或高并发场景中更常用。

示例:异步读取文件内容

javascript 复制代码
const fs = require('fs');

// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('读取文件时出错:', err);
        return;
    }
    console.log('文件内容:', data);
});

上述代码使用 fs.readFile 异步读取 example.txt 文件的内容,'utf8' 参数指定了文件的编码格式,读取完成后通过回调函数处理结果。

2. http 模块

http 模块用于创建 HTTP 服务器和客户端,是构建 Web 应用和 API 的基础。

示例:创建一个简单的 HTTP 服务器

javascript 复制代码
const http = require('http');

// 创建服务器
const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello, World!\n');
});

// 监听端口
server.listen(3000, '127.0.0.1', () => {
    console.log('服务器运行在 http://127.0.0.1:3000/');
});

此代码通过 http.createServer 创建了一个 HTTP 服务器,当有请求到来时,设置响应状态码、响应头,并返回 Hello, World! 信息。最后使用 listen 方法监听 3000 端口。

3. path 模块

path 模块提供了处理和转换文件路径的实用工具,能确保在不同操作系统上路径的正确性。

示例:处理文件路径

javascript 复制代码
const path = require('path');

// 拼接路径
const filePath = path.join(__dirname, 'public', 'index.html');
console.log('拼接后的文件路径:', filePath);

// 获取文件扩展名
const extname = path.extname(filePath);
console.log('文件扩展名:', extname);

path.join 方法用于拼接多个路径片段,__dirname 表示当前脚本所在的目录。path.extname 方法用于获取文件的扩展名。

4. os 模块

os 模块提供了与操作系统进行交互的实用方法和属性,可获取系统信息。

示例:获取系统内存信息

javascript 复制代码
const os = require('os');

// 获取系统总内存
const totalMemory = os.totalmem();
console.log('系统总内存:', totalMemory, '字节');

// 获取系统空闲内存
const freeMemory = os.freemem();
console.log('系统空闲内存:', freeMemory, '字节');

os.totalmem 方法返回系统的总内存量,os.freemem 方法返回系统的空闲内存量。

5. events 模块

events 模块是 Node.js 中事件驱动编程的基础,通过 EventEmitter 类实现事件的发布和订阅机制。

示例:自定义事件的发布和订阅

javascript 复制代码
const EventEmitter = require('events');

// 创建事件发射器实例
const myEmitter = new EventEmitter();

// 定义事件处理函数
const myEventHandler = () => {
    console.log('事件被触发了!');
};

// 订阅事件
myEmitter.on('myEvent', myEventHandler);

// 发布事件
myEmitter.emit('myEvent');

上述代码创建了一个 EventEmitter 实例,使用 on 方法订阅 myEvent 事件,使用 emit 方法发布该事件,当事件发布时,对应的事件处理函数会被调用。

6. crypto 模块

crypto 模块提供了加密和解密功能,可用于数据的加密、哈希计算等。

示例:计算字符串的 SHA - 256 哈希值

javascript 复制代码
const crypto = require('crypto');

const data = 'Hello, World!';
const hash = crypto.createHash('sha256').update(data).digest('hex');
console.log('SHA - 256 哈希值:', hash);

crypto.createHash 方法创建一个哈希对象,update 方法用于更新要计算哈希值的数据,digest 方法将计算结果以十六进制字符串的形式输出。

相关推荐
xiaoye-duck2 分钟前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚25 分钟前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
啾咪orJIUMI1 小时前
Vue 3 + 高德地图封装实战:点位、区域、Loca 流光与 Vue 信息窗体
前端·vue.js
掘金者阿豪1 小时前
AI数据库不只是向量检索:从数据语义到库内智能计算的技术演进
前端
梦里寻码1 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
FRing031 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光1 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
Dumbness1 小时前
一份 JSON 生成增删改查接口,入参清洗漏了什么:Number(" ") 是 0,搜 100% 把 1000 元券也搜出来
node.js·express
SameX1 小时前
HarmonyOS ArkUI Dialog 复用 用 @CustomDialog + enum type 做多类型统一管理的做法
前端
starzy19902 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala