Node.js 核心模块 fs、path 与 http 实战指南

作者:服务小站

时间:2026-10-26

浏览:636

本文详解Node.js中fs、path和http三大核心模块的使用。通过实例演示文件读写操作、路径拼接与解析方法,以及基于http模块构建本地服务器的完整流程,涵盖请求处理与静态资源响应,帮助开发者掌握Node.js基础开发技能。

文章目录

首先展示本文的核心架构图。

首先展示本文的核心架构图。

一、Node.js 概念与作用

1.概念:

Node.js 是一个基于 Google V8 引擎构建的运行环境。V8 是 Google 发布的开源 JavaScript 引擎,最初作为 Chrome 浏览器的 JavaScript 解释器使用。

2.作用:

  1. Node.js 具备卓越的高并发处理能力,能够支持高性能服务器的构建。
  2. Node 包管理器(NPM)提供了数十万个可复用的工具库。它还提供了一流的依赖管理方案,支持自动化工具链的构建。简而言之,Node.js 旨在实现模块化开发,开发者只需按需导入所需模块,无需将整个文件引入项目。

二、模块化开发的三大板块

1.模块化开发介绍

将大型文件拆分为多个小文件,并通过特定语法将它们组合在一起的开发方式,被称为模块化开发。

模块化开发的优势在于:

  • 按需引入,有效节省系统资源。
  • 避免全局变量污染。
  • 业务逻辑分离,便于后期维护。

2.常见的三大模块

1. fs 文件读写模块

readFile() 方法的使用

①导入内置模块

const fs = require('fs')

②调用模块

第一个参数 path:指定文件路径。

第二个参数 encoding:指定文件编码,默认为二进制,中文环境通常使用 utf8。

第三个参数 callback:回调函数 (err, data) => { err 表示错误信息,data 表示读取到的数据 }。

fs.readFile('./data/aaa.txt','utf-8',(err,data)=>{
  if(err){
    console.log(err); 
    throw err
  }else{
    console.log(data);
  }
})

③在集成终端中查看结果

首先展示本文的核心架构图。

输入 node 文件名(可按 Tab 键快速补全文件名)。

首先展示本文的核心架构图。

writeFile() 方法的使用

①导入内置模块

const fs = require('fs')

②调用模块

第一个参数:文件路径。

第二个参数:要写入的数据内容。

第三个参数:文件编码,默认为数据本身的编码格式。

第四个参数:回调函数 (err) => { },用于处理写入结果。

fs.writeFile('./data/bbb.txt','年少莫问前程,天涯亦有归途',err=>{
  if( err ){
    throw err
  }else{
    console.log('文件写入成功')
  }
})

③在集成终端中查看结果

首先展示本文的核心架构图。

首先展示本文的核心架构图。

打开 bbb.txt 文件以查看写入内容。

首先展示本文的核心架构图。

2. path 路径模块

①导入模块

const path = require('path')

②使用模块,包含四种常用方法。

(1) 获取文件的扩展名

/* 不关心此路径文件在不在, 就是处理这个字符串。 获取.后面的部分可以知道这个文件格式 */
console.log( path.extname('index.html') )// .html
console.log( path.extname('aaa.bbb') )// .bbb
console.log(path.extname('javaScript.js'));//js

在集成终端中查看输出结果。

首先展示本文的核心架构图。

(2) 拼接相对路径,使用 join 方法

/* 把多个字符串按照路径的方式拼接起来 */
console.log( path.join('aaa','bbb') )// aaa/bbb
console.log(path.join('a,b,c'));//a,b,c

在集成终端中查看输出结果。

首先展示本文的核心架构图。

(3) 拼接绝对路径

/* 默认从磁盘根目录开始拼接出完整的路径 */
console.log( path.resolve('/aa','bb','cc') )// 文件夹绝对路径/aa/bb/cc

在集成终端中查看输出结果。

首先展示本文的核心架构图。

(4) 获取当前文件所在的绝对路径

console.log( __dirname )// 可获取文件夹绝对路径
console.log( path.join(__dirname , 'aaa','bbb') )

在集成终端中查看输出结果。

首先展示本文的核心架构图。

3. http 搭建服务器模块

整体步骤如下:

①导入 http 模块

const http = require('http')

②创建服务器实例

const app =  http.createServer( (req,res)=>{
  // (1) req : request 请求报文
  console.log( decodeURI(req.url) )
  // console.log( req.url, decodeURI(req.url) )
  // (2)处理
  // (3)res : response 响应报文
} )

③启动 http 服务器

// 3.开启服务器
/* 
第一个参数 port : 端口号
  一个电脑有很多个软件,一个软件对应一个端口号. 范围[0,65535]
第二个参数 hostname : 主机名(ip地址)
  网线地址: 192.168.81.34            cmd命令:ipconfig
  本机地址: 127.0.0.1  (获取当前网线的ip地址,相当于js中的self) 
第三个参数 callback : ()=>{}
*/
app.listen(3088,'192.168.74.149',()=>{
  console.log('服务器开启成功')
})

首先展示本文的核心架构图。

随后在浏览器地址栏输入地址,即可看到服务器接收到了 666666 的响应信息。

(查看本机 IP 地址,可在 cmd 中输入 ipconfig 命令获取)。

首先展示本文的核心架构图。

方法1:在服务器中根据请求不同处理不同的信息

const http =require('http')
const app =http.createServer((req,res)=>{
    if( req.url === '/index' ){
        // 3.response : 响应报文
        // 设置响应头 :  服务器告诉浏览器我给你的数据是什么格式
        res.writeHead(200,{
          'Content-Type':'text/html;chartset=utf8'
        })
        res.end('index')//响应体
      }else if( req.url === '/login' ){
    
        res.writeHead(200,{
          'Content-Type':'text/json;chartset=utf8'
        })
        // 后台只能响应 字符串或二进制,  如果你想要响应其他数据需要转成json
        // js=>json :  JSON.stringify( js对象 )
        res.end( JSON.stringify( {name:'初映',age:22} ) )
        
      }else{
        res.end('Not Found' + req.url )
      }
})
 
app.listen(3088,'192.168.74.149',()=>{
    console.log('服务器开启成功')
  })

当请求地址是 login 时,执行 res.end(浏览器响应)。

首先展示本文的核心架构图。

当请求地址是 index 时,执行 res.end(浏览器响应)。

首先展示本文的核心架构图。

当服务器收到错误的请求地址时,执行 res.end(浏览器响应)。

首先展示本文的核心架构图。

方法2:Node.js 响应客户端 html 文件

①导入所需的模块

// 1.导入
const http =require('http')
const fs =require('fs')
const path =require('path')

②创建服务器实例

// 2.创建
const app = http.createServer((req,res)=>{
    if(req.url==='/'){
        // 响应index.html代码
        fs.readFile(path.join(__dirname,'index.html'),(err,data)=>{
            if (err) {
               throw err 
            }else{
                res.end(data)
            }
        })}}
    )

③启动服务器

// 3.开启
app.listen(3000,()=>{
    console.log('服务器开启成功')
  })

在网页地址栏进行搜索测试。

首先展示本文的核心架构图。

总结

到此这篇关于 Node.js 中 fs、path、http 模块使用的文章就介绍到这了,更多相关 Node.js fs、path、http 模块使用内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章