node.js中的path模块

在 Node.js 中,path 模块提供了处理和操作文件路径的功能,其中 path.join 和 path.resolve 是两个常用的方法。它们在处理路径时有不同的行为和用途:

功能概述

  • path.join(): 该方法主要用于将多个路径片段拼接成一个完整的路径字符串。它会正确处理路径分隔符(在Windows系统中是\,在Linux和macOS系统中是/),并且会忽略空字符串片段。
  • path.resolve(): 此方法用于将相对路径转换为绝对路径。它会从当前工作目录开始,解析每个路径片段,遇到..会向上一级目录回溯,遇到.则表示当前目录,会被忽略。
路径拼接方式

1.path.join() :按照传入的路径片段顺序进行拼接,使用系统特定的路径分隔符连接各个片段。

示例代码:

javascript 复制代码
const path = require('path');
// 连接多个路径片段
console.log(path.join('/目录1', '/目录2', '目录3')); // 输出: /目录1/目录2/目录3
// 忽略长度为零的路径片段
console.log(path.join('/目录1', '', '目录3')); // 输出: /目录1/目录3
// 如果连接后的路径字符串为空,则返回当前工作目录
console.log(path.join('', '', '')); 

2.path.resolve() :从当前工作目录开始解析路径,遇到..会向上一级目录回溯,遇到.则表示当前目录,会被忽略。

示例代码:

javascript 复制代码
const path = require('path');
// 解析为绝对路径
console.log(path.resolve('/目录1', '/目录2', '目录3')); // 输出: /目录2/目录3
// 使用当前工作目录
console.log(path.resolve('目录1', '目录2', '目录3')); // 输出: 当前工作目录/目录1/目录2/目录3
// 移除尾部斜杠
console.log(path.resolve('/目录1', '目录2/')); // 输出: /目录1/目录2
返回路径类型
  1. path.join():返回的是一个相对路径或者根据传入片段组合而成的路径字符串,它不会将路径解析为绝对路径,除非传入的路径片段本身就是绝对路径。
  2. path.resolve():总是返回一个绝对路径。如果所有传入的路径片段都是相对路径,那么它会基于当前工作目录来生成绝对路径;如果传入了绝对路径片段,它会从第一个绝对路径片段开始解析。

示例代码:

javascript 复制代码
const path = require('path');
// 相对路径拼接
console.log(path.join('folder1', 'folder2')); 
// 输出 folder1\folder2 (Windows)或 folder1/folder2 (Linux/macOS)

// 转换为绝对路径
console.log(path.resolve('folder1', 'folder2')); 
// 假设当前工作目录是 C:\Users\example,输出类似 C:\Users\example\folder1\folder2 (Windows)
处理特殊路径片段
  • path.join() :会直接将..和.作为普通路径片段进行拼接,不会对其进行特殊处理来改变路径层级。
    示例代码:
javascript 复制代码
const path = require('path');
console.log(path.join('folder1', '..', 'folder2')); 
// 输出 folder1\..\folder2 (Windows)或 folder1/../folder2 (Linux/macOS)
  • path.resolve() :遇到..会向上一级目录回溯,遇到.则表示当前目录,会被忽略。
    示例代码:
javascript 复制代码
const path = require('path');
console.log(path.resolve('folder1', '..', 'folder2')); 
// 假设当前工作目录是 C:\Users\example,输出类似 C:\Users\example\folder2 (Windows)

使用场景

  1. path.join():适用于在已知的相对路径基础上,按照特定顺序拼接新的路径片段,生成新的相对路径。例如,在构建项目时,拼接资源文件的相对路径。
  2. path.resolve():在需要将相对路径转换为绝对路径,或者获取某个文件或目录的绝对路径时使用。比如,在Node.js应用中,获取配置文件的绝对路径,以确保在不同工作目录下都能准确找到文件。
相关推荐
LucianaiB7 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel8 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易9 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰11 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒11 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手11 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz11 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易12 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么13 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
10share13 小时前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js