Node.js核心模块:fs、path与http详解

1.fs模块

fs 是 Node.js 的核心模块之一,用于与文件系统进行交互。它提供了大量用于读取、写入、更新、删除文件和目录的 API。

1.1 核心特点

  1. 无需安装,直接 require('fs') 即可使用。
  2. 支持异步与同步两种形式 :大多数方法都有同步版本(如 readFileSync)和异步版本(如 readFile)。
  3. 回调风格 :异步方法默认使用回调函数(Node.js 风格:(err, data) => {}
  4. Promise 支持 :从 Node.js v10 起,可以使用 fs.promises 获取基于 Promise 的 API。

1.2 常用API

1.2.1 读取文件

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

// 异步读取
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 同步读取
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

1.2.2 写入文件

javascript 复制代码
// 异步写入(会覆盖原有内容)
fs.writeFile('output.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('文件已保存');
});

1.2.3 追加内容和删除文件

javascript 复制代码
// 向log.txt文件中添加新的日志+\n(换行)
fs.appendFile('log.txt', '新的日志\n', (err) => {
  if (err) throw err;
});


// 删除文件
fs.unlink('oldfile.txt', (err) => {
  if (err) throw err;
  console.log('文件已删除');
});

1.2.4 使用Promise风格

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

async function example() {
  try {
    const data = await fs.readFile('example.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

example();

2.path模块

path 也是 Node.js 的核心模块之一,专门用来处理和转换文件路径字符串。它不关心磁盘上是否真的存在这个路径,只负责"字符串层面的路径运算"。

2.1 常用API

2.1.1 绝对路径

path.resolve([...paths]),把相对路径解析成绝对路径,以当前工作目录为基准。

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

// 把"当前文件所在目录"与"文件路径"片段拼接并解析成绝对路径
console.log(path.resolve(__dirname, '文件路径'));

// 假设当前文件是 /home/alex/proj/src/tool.js,就可以写成下述的情况
console.log(path.resolve(__dirname, 'log.txt'));

2.1.2 路径拼接

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

//安全拼接
const full = path.join('src', 'components', 'Button.tsx');
//src/components/Button.tsx   (Windows 下自动用反斜杠)

3.http模块

http 是 Node.js 最核心 的网络模块之一,零依赖就能创建 HTTP 服务器或发起 HTTP 请求(客户端)。

3.1 使用方法

  1. 服务端http.createServer() → 监听端口 → 响应请求

  2. 客户端http.get() / http.request() → 向外发请求(类似浏览器 fetch),在listen中添加请求。

javascript 复制代码
// server.js
const http = require('http');

const server = http.createServer((req, res) => {
  console.log(`${req.method} ${req.url}`);       // 打日志
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
  // end表示结束响应,可选最后一段数据
  res.end('你好,世界\n');
});

server.listen(3000, () => {
  console.log('Server ready → http://localhost:3000');
  // 服务器就绪后,自己作为客户端向自己发请求
  http.get('http://localhost:3000/test', (res) => {
    let body = '';
    res.on('data', chunk => body += chunk);
    res.on('end', () => {
      console.log('[client] status:', res.statusCode);
      console.log('[client] headers:', res.headers);
      console.log('[client] body:', body);
      // 收到响应后退出end回调
      server.close();
    });
  })
});

然后在终端中运行node server.js,即可使用浏览器访问http://localhost:3000,并发送请求。

相关推荐
毕设源码-朱学姐1 天前
【开题答辩全过程】以 基于Node.js的书籍分享平台设计与实现为例,包含答辩的问题和答案
node.js
前端 贾公子1 天前
Node.js 如何处理 ES6 模块
前端·node.js·es6
周杰伦的稻香1 天前
Hexo搭建教程
java·node.js
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于node.js vue的点餐系统的设计与实现为例,包含答辩的问题和答案
前端·vue.js·node.js
朝朝暮暮an2 天前
Day 2|Node.js 运行机制、模块系统与异步初探
node.js
aidou13142 天前
Visual Studio Code(VS Code)安装步骤
vscode·npm·node.js·环境变量
止观止2 天前
告别 require!TypeScript 5.9 与 Node.js 20+ 的 ESM 互操作指南
javascript·typescript·node.js
一只专注api接口开发的技术猿2 天前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
天远数科2 天前
天远车辆过户查询API集成指南:Node.js 全栈视角下的二手车数据挖掘
大数据·数据挖掘·node.js·vim
全栈小52 天前
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本
前端·npm·node.js