Node.js 核心模块:fs、path、http 模块
直接掌握 Node.js 开发中最常用的三个内置模块,即可完成文件读写、路径拼接与本地服务器搭建。无需安装第三方依赖,开箱即用。以下指南按实际开发顺序拆解具体操作。
使用 fs 模块操作文件系统
fs 模块全称为文件系统模块,用于让 JavaScript 直接读写计算机硬盘中的文件。现代 Node.js 推荐使用 fs/promises 配合异步语法,避免代码嵌套混乱。
- 创建 项目基础目录。打开系统终端,输入
mkdir node-core-demo && cd node-core-demo并 执行。随后 运行npm init -y生成默认配置文件。 - 新建 操作脚本。在目录内创建名为
file-ops.js的纯文本文件。 - 编写 读写逻辑。将以下代码完整粘贴至脚本中:
const fs = require('fs/promises');
async function manageFiles() {
try {
const targetFile = 'data.log';
// 向硬盘写入字符串
await fs.writeFile(targetFile, '系统初始化完成\n核心模块加载成功', 'utf-8');
console.log('写入动作结束');
// 读取硬盘内容
const logContent = await fs.readFile(targetFile, 'utf-8');
console.log('读取结果:', logContent);
// 删除测试文件释放空间
await fs.unlink(targetFile);
console.log('清理动作结束');
} catch (error) {
console.error('中断原因:', error.message);
}
}
manageFiles();
4. **运行** 验证脚本。终端 **输入** `node file-ops.js` 并 **回车**。控制台将按顺序打印写入状态、文件内容以及清理状态。若终端返回 `EACCES` 错误,说明当前用户缺乏该目录的磁盘写入权限,**需使用** 管理员权限重新打开终端。
---
## 使用 path 模块处理文件路径
`path` 模块专门解决跨系统路径分隔符差异问题。Windows 系统默认使用反斜杠 `\`,而 macOS 与 Linux 系统使用正斜杠 `/`。手动拼接字符串极易导致路径断裂,必须依赖该模块自动适配。
1. **创建** 路径测试脚本。在同级目录新建 `path-utils.js`。
2. **引入** 内置模块。在文件顶部 **输入** `const path = require('path');` 并 **保存**。
3. **调用** 路径拼接方法。在文件中 **追加** 以下代码段:
```javascript
const path = require('path');
// 智能拼接目录与文件名,自动匹配当前操作系统的斜杠方向
const safePath = path.join(__dirname, 'uploads', 'images', 'avatar.jpg');
console.log('拼接结果:', safePath);
// 将相对路径强制转换为绝对路径,消除歧义
const absolutePath = path.resolve('./config.json');
console.log('绝对定位:', absolutePath);
// 提取文件后缀名与基础名称
const ext = path.extname('document.tar.gz');
const base = path.basename('/root/config/settings.ini');
console.log('提取后缀:', ext);
console.log('提取文件名:', base);
- 执行 测试命令。终端 输入
node path-utils.js并 回车。对比输出结果,确认斜杠方向已自动匹配系统环境,且path.extname能够精准识别多级后缀。 - 防范 路径穿越漏洞。处理用户上传路径时,使用
path.resolve()结合 判断 方法,确保最终路径始终限制在项目安全目录内,严禁直接拼接未过滤的外部输入参数。
使用 http 模块搭建本地服务器
http 模块提供创建网络通信端点的基础能力。不依赖任何第三方框架,即可让本机接收浏览器请求并返回文本、JSON 或 HTML 数据。
- 创建 服务器启动文件。新建
web-server.js。 - 构建 请求处理流。将完整服务代码写入文件:
const http = require('http');
const server = http.createServer((request, response) => {
// 配置响应头,告知浏览器返回数据格式与编码
response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
// 拦截不同 URL 返回对应数据
switch (request.url) {
case '/':
response.end('服务器根路径响应正常');
break;
case '/health':
response.end('运行状态: 在线');
break;
default:
response.writeHead(404);
response.end('请求资源未找到');
}
});
// 绑定监听网络端口
server.listen(8080, () => {
console.log('监听已开启: 127.0.0.1:8080');
});
3. **启动** 后台服务。终端 **输入** `node web-server.js`。控制台打印监听提示后,进程将保持阻塞状态等待外部连接,此属正常服务行为。
4. **发送** 测试请求。另开一个终端窗口或打开浏览器地址栏,**输入** `http://127.0.0.1:8080/health` 并 **访问**。页面或终端将准确返回 `运行状态: 在线` 文本。
5. **停止** 监听进程。完成调试后,在运行 `node` 命令的终端窗口中 **按下** `Ctrl + C` **强制中断**。端口占用随即解除,系统恢复初始状态。
暂无评论,快来抢沙发吧!