Node.js path模块详解:路径处理实战指南
本文详细介绍Node.js中path模块的核心功能,涵盖绝对路径与相对路径的概念辨析、特殊符号含义,以及dirname、join、basename、extname、resolve和relative等常用方法的语法与实战应用,帮助开发者高效处理文件路径。
相对路径和绝对路径
概念
首先回顾相对路径与绝对路径的基本定义:
- 绝对路径是指文件在系统中的真实存储位置,通常以Web站点的根目录为参考基准。之所以称为绝对,是因为无论网页如何引用该文件,其路径描述均保持一致。绝对路径与相对路径的主要区别在于参考点的不同:绝对路径始终以根目录为基准,因此对所有文件而言,该参考点固定不变。
- 相对路径是指相对于当前文件所在位置的路径,以引用文件所在的网页目录为参考基础构建。因此,当不同目录下的网页引用同一文件时,所使用的路径会因参考点不同而有所差异,故称为相对路径。
路径特殊符号
"./" 代表当前所在目录,用于相对路径表示
"../" 代表上一级目录,用于相对路径表示
"../../" 代表上两级目录,用于相对路径表示
"/" 代表根目录,用于绝对路径表示
"C:/users/" 代表特定根目录(如用户目录),用于绝对路径表示
示例说明:
在实际开发中,通常优先使用相对路径引入文件,因其具有更高的灵活性。若在项目上线时使用绝对路径,往往会导致配置繁琐。相对路径因其便捷性,成为开发中的首选方案。
接下来演示一个小功能:将图片以不同路径形式引入HTML文件。

绝对路径引入方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
img {
width: 1200px;
height: 700px;
}
</style>
<body>
<img src="/image/23on23-01_2.jpg" alt="">
</body>
</html>
在此处应用了路径符号/,其中/标识根目录(D:/node复盘/03)。
相对路径引入方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
img {
width: 1200px;
height: 700px;
}
</style>
<body>
<img src="./image/23on23-01_2.jpg" alt="">
</body>
</html>
此处使用了路径符号./和./,代表当前所在目录(例如 D:/node复盘/03)。
成功引入图片:

path路径模块
什么是path路径模块
path模块是Node.js官方提供的用于处理文件路径的内置模块。它提供了一系列方法和属性,旨在满足用户对路径处理的各类需求。
获取路径名path.dirname()
该方法返回路径的目录名,并忽略尾部的目录分隔符。语法格式如下:
path.dirname(path)
代码示例:
const path = require('path')
console.log(path.dirname(`D:/node/02/hello.js`)); // D:/node/02
此方法打印出目录名D:/node/02。
路径拼接path.join()
使用path.join()方法可将多个路径片段拼接为完整的路径字符串,语法格式如下:
path.join([...paths])
参数解读:
- …paths < string > 路径片段的序列
- 返回值: < string >
代码示例:
const path = require('path')
// 注意: ../会抵消前面的路径
const pathStr = path.join('/a','/b/c','../','./c','/d')
console.log(pathStr); // \a\b\c\d
首先需要引入path模块,Node中引入模块使用内置方法require()。如上例所示,传入多个字符串后,最终打印出\a\b\c\d,体现了join的拼接功能。需要注意的是,../会抵消前面的路径,例如在案例中../抵消了/c。
获取路径中文件名path.basename()
使用path.basename()方法可获取路径中的最后一部分,常用于提取文件名。语法格式如下:
path.basename(path[, ext])
参数解读:
- path: 文件路径
- ext: 文件扩展名
代码示例:
const path = require('path')
// 定义文件的存放路径
const fpath = '/a/b/c/index.html'
const fullName = path.basename(fpath)
console.log(fullName) // index.html
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt) // index
当未传入第二个参数时,返回路径的最后部分,即index.html;当传入第二个参数时,将在第一种情况的基础上裁剪掉该扩展名,因此返回index。
获取路径中文件扩展名path.extname()
使用path.extname()方法返回路径中文件的后缀名,即最后一个'.'之后的部分。若路径中不包含'.',或路径仅包含一个'.'且该'.'为第一个字符,则返回空字符串。语法格式如下:
path.extname(path)
参数path:传入的路径
代码示例:
const path = require('path')
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext) // .html
此方法与前述方法不同,其功能在于提取后缀名。
解析为绝对路径path.resolve()
path.resolve()方法将一组路径或路径段解析为绝对路径,语法格式如下:
path.resolve( [from…],to ) 注:将参数to位置的字符解析到绝对路径,[from … ]为选填项,表示路径源。
参数解读:
- from : 源路径
- to : 将被解析到绝对路径的字符串
代码示例:
const path = require('path)
path.resolve('/foo/bar', './baz') // returns '/foo/bar/baz'
path.resolve('/foo/bar', 'baz') // returns '/foo/bar/baz'
path.resolve('/foo/bar', '/baz') // returns '/baz'
path.resolve('/foo/bar', '../baz') // returns '/foo/baz'
path.resolve('home','/foo/bar', '../baz') // returns '/foo/baz'
path.resolve('home','./foo/bar', '../baz') // returns '/home/foo/baz'
path.resolve('home','foo/bar', '../baz') // returns '/home/foo/baz'
path.resolve('home', 'foo', 'build','aaaa','aadada','../../..', 'asset') //return '/home/foo/asset'
解析逻辑为:若字符以/ 开头,则不会拼接到前面的路径;若以../开头,则拼接前面的路径且不含最后一节路径;若连续出现多个../../..或../..,则忽略前方n(n代表出现的..数量)个..路径名进行拼接;若以./开头或无符号,则拼接前面路径。
返回相对路径path.relative(from, to)
path.relative()方法根据当前工作目录,返回从from到to的相对路径。如果from和to各自解析到相同的路径(分别调用path.resolve()之后),则返回零长度字符串。
如果将零长度字符串传入from或to,则使用当前工作目录代替该零长度字符串。
代码示例:
const path = require('path')
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// 返回: '../../impl/bbb'
该代码表达的是对于from参数而言,to参数的位置在哪里,通过解析后得出../../impl/bbb。
小结
Node的内置模块中,path模块的实战操作在于获取文件名称时可实现灵活使用。一般情况下,只需掌握前四种方法,最后两种方法是对path模块的进阶应用。
到此这篇关于Node.js常用三大模块之path模块的文章就介绍到这了,更多相关Node.js path模块内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
怎么在本地运行JavaScript脚本:Node.js下载安装与环境配置教程
2026-11-05 09:02:33
JavaScript开发环境怎么搭建:Node.js安装与VS Code配置指南
2026-11-03 23:36:59
JavaScript零基础入门:环境搭建与第一个Hello World
2026-11-03 23:34:09
NW.js 是什么:基于 Chromium 和 Node.js 的桌面应用框架
2026-11-03 15:14:00
nvm、n 和官方安装包:哪种 Node.js 升级方式更适合你
2026-11-03 14:54:28
