node.js之path模块

108 阅读3分钟

前言

node.js的path模块是Node.js的内置的路径处理模块,在我们日常开发中经常使用,有的时候也会和fs模块一起使用。

path模块

path的模块的功能主要分为获取路径信息和处理路径。

1. 获取路径信息

其中获取路径信息又包括获取路径的目录名,获取路径的基础名称,获取路径的后缀名,以及获取操作系统的路径分隔符。

1.1 获取路径的目录名

获取目录名是使用path的dirname方法

语法

path.dirname(path)
  • path: string, 表示路径

示例

const path = require('path');

const data = path.dirname('./index.js');
console.log('文件的目录名', data);
const data1 = path.dirname('/path/index.js');
console.log('文件的目录名', data1);

效果如下:

1681034353221(1).png

dirname方法是直接根据参数来解析出目录名的,不会将../或./这种相对符的路径进行解析。

1.2 获取路径的基础名称

获取路径的基础名称是使用path模块的basename方法。

语法

path.basename(path[, ext])
  • path: string, 表示路径
  • ext: string, 可选的文件扩展名

示例

const data = path.basename('./index.js');
console.log('文件的基础名称', data);
const data1 = path.basename('/path/index.js');
console.log('文件的基础名称', data1);

效果如下:

image.png

1.3 获取路径的后缀名

获取文件的后缀名也叫做获取文件的扩展名,是使用path的extname方法来获取

语法

path.extname(pat)
  • path: string, 表示路径

示例

const data = path.extname('./index.js');
console.log('文件的扩展名', data);
const data1 = path.extname('/path/index.js');
console.log('文件的扩展名', data1);

效果如下:

image.png

1.4 获取操作系统的路径分隔符

不同平台的路径分隔符是不一样的,比如在windows中一般都是/,在linux上一般都是\。获取操作系统的路径分隔符是使用path的sep方法。

语法

path.sep()

示例

const data = path.basename('./index.js');
console.log('文件的基础名称', data);
const data1 = path.basename('/path/index.js');
console.log('文件的基础名称', data1);

效果如下:

1681035236674(1).png

2. 处理路径信息

处理路径信息的功能主要分为解析路径并返回对象和拼接路径

2.1 解析路径并返回对象

解析路径并返回对象主要用到的是path的parse方法

语法

path.parse(path)
  • path: string, 表示路径

示例

const paseObj = path.parse('./index.js');
console.log('解析文件', paseObj);
const paseObj1 = path.parse('/path/index.js');
console.log('解析文件', paseObj1);

效果如下:

1681036241140.png

用不同的路径表示的同一个文件解析出来的对象内容是不同的

2.2 拼接路径

拼接路径主要有两种方法实现。path的resolve方法和path.join方法

2.2.1 path.resolve()

将路径或路径片段的序列解析为绝对路径。返回的路径是从右往左处理,后面的每个 myPath 被依次解析,直到构造出一个完整的绝对路径。

语法

path.resolve([...paths])
  • ...paths:string, 一个路径片段的序列

示例

const pathArr = ['/path/test', 'index', 'test.txt'];
const data = path.resolve(...pathArr);
console.log('拼接的路径', data);

效果如下:

image.png

2.2.2 path.join()

使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。

语法

path.join([...paths])
  • ...paths:string, 一个路径片段的序列

示例

const pathArr = ['/path/test', 'index', 'test.txt'];
const data = path.join(...pathArr);
console.log('拼接的路径', data);

效果如下:

image.png

2.2.3 两者的区别

  1. 它们都可以拼接成一个完整路径.
  2. join方法是直接将路径的字符串进行拼接,这有点类似于数组的join方法,而resolve是会根据路径的情况进行解析之后再拼接的
  • 如果目录名是以./或../这种不加/开头的话,resolve 会找到磁盘下的根目录
  • 如果文件的基础名称是以/开头的,resolve 就会直接返回 basename
const pathArr = ['/path/test', '/index', 'test.txt'];
const data = path.resolve(...pathArr);
console.log('拼接的路径', data);
const data1 = path.join(...pathArr);
console.log('拼接的路径', data1);

效果如下:

image.png

3. 常用的路径常量

下面几个是path模块中常用的几个路径常量

  • __dirname:这是一个常量,表示:当前执行文件所在完整目录。
  • __filename:这是一个常量。表示:当前执行文件的完整目录 + 文件名。
  • process.cwd:获取当前执行 Node命令 时的目录名。
console.log('__dirname', __dirname);
console.log('__filename', __filename);
console.log('process.cwd', process.cwd());

效果如下:

image.png

想了解更多关于path模块的内容,请查阅Node官网