当前位置: 首页 > news >正文

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 读取文件

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 写入文件

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

1.2.3 追加内容和删除文件

// 向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风格

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]),把相对路径解析成绝对路径,以当前工作目录为基准。

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 路径拼接

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中添加请求。

// 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,并发送请求。

http://www.dtcms.com/a/465687.html

相关文章:

  • 企业级UDP文件传输工具如何重塑数据交换格局
  • 在JavaScript / Node.js中,Web服务器参数处理与编码指南
  • 佛山新网站建设服务网站中文域名好吗
  • Python打包成exe(windows)或者app(mac)
  • 网站开发都做什么小程序电商系统开发
  • 《电子商务网站开发实训》总结抖音代运营 广州
  • 《MySQL索引优化实战从B+树原理到慢查询性能提升》
  • 深入理解MySQL索引原理B+树如何提升查询性能
  • Spring Boot 整合 Thymeleaf 生成 HTML 页面教学
  • 深入解析MySQL索引优化从B+树原理到实战性能调优
  • MySQL索引优化的艺术从B+树原理到慢查询性能提升实践
  • 解密MySQL索引优化从B+树原理到实战性能提升
  • {title:深入解析MySQL索引优化从B+树原理到实战调优策略}
  • 深入解析MySQL索引优化从B+树原理到实战避坑指南
  • 古色古香网站模板加盟网络营销推广公司
  • 北京网站建设推荐q479185700上快给手机做网站的公司
  • wordpress建站视频静态网站可以申请域名吗
  • 3. 3层神经网络的实现
  • 【论文阅读 | TCSVT 2024 | CCAFusion: 用于红外与可见光图像融合的跨模态坐标注意力网络】
  • 中小企业网站建设客户需求调查问卷基于拍卖的拍卖网站开发
  • 百度收录提交接口谷歌优化的网络公司
  • 坯子插件库 v3.2.1 for SketchUp 2022-2024下载与安装教程
  • IT行业——如何将自己的技能重新包装,从“一堆零件”变成“一套解决问题的组合工具”*
  • 版本控制器 git(3)--- git 分支管理
  • freertos-软件模拟IIC读写at24c02
  • 优化 Service 层架构:从高耦合到清晰分层的实战重构指南
  • 电子商务网站的运营一般需要做哪些准备怎么建设网站平台
  • AI × RWA 本地生活品牌数字资产管理与增长平台
  • 银行测试:第三方支付平台业务流,功能/性能/安全测试方法
  • JavaWeb零基础学习Day2——JS Vue