路径模块

封装了各种路径相关的操作,和 Buffer 一样, NodeJS 中的路径也是一个特殊的模块,不同的是 Buffer 模块已经添加到​​Global​​​ 上了, 所以不需要手动导入,而 Path 模块没有添加到 ​​Global​​ 上, 所以使用时需要手动导入

获取路径的最后一部分

语法示例如下

path.basename(path[, ext])

​basename​​ 用于获取路径的最后一个组成部分

  • 第一个参数:需要处理的路径
  • 第二个参数:需要过滤的字符
let res = path.basename('/a/b/c/d/index.html');
console.log(res);
let res = path.basename('/a/b/c/d');
console.log(res);
let res = path.basename('/a/b/c/d/index.html', ".html");
console.log(res);

获取路径

语法示例如下

path.dirname(path)

​dirname​​ 用于获取路径中的目录, 也就是除了最后一个部分以外的内容

let res = path.dirname('/a/b/c/d/index.html');
console.log(res);
let res = path.dirname('/a/b/c/d');
console.log(res);

获取扩展名称

语法示例如下

path.extname(path)

​extname​​ 用于获取路径中最后一个组成部分的扩展名

let res = path.extname('/a/b/c/d/index.html');
console.log(res);
let res = path.extname('/a/b/c/d');
console.log(res);

判断是否是绝对路径

语法示例如下

path.isAbsolute(path)

isAbsolute 用于判断路径是否是一个绝对路径

let res = path.isAbsolute('/a/b/c/d/index.html');
console.log(res);
let res = path.isAbsolute('./a/b/c/d/index.html');
console.log(res);
let res = path.isAbsolute('c:\\a\\b\\c\\d\\index.html');
console.log(res);
let res = path.isAbsolute('a\\b\\c\\d\\index.html');
console.log(res);

注意点: 区分操作系统, 在 ​​Linux​​​ 操作系统中 ​​/​​​ 开头就是绝对路径, 在 Windows 操作系统中盘符开头就是绝对路径, 在 ​​Linux​​​ 操作系统中路径的分隔符是左斜杠 ​​/​​​, 在Windows操作系统中路径的分隔符是右斜杠 ​​\​

获取当前操作系统路径分隔符

语法示例如下

path.delimiter
console.log(path.delimiter);

​path.delimiter​​​ 用于获取当前操作系统环境变量的分隔符的, 如果是在 Linux 操作系统中运行那么获取到的是 ​​:​​​ 如果是在Windows操作系统中运行那么获取到的是 ​​;​

获取当前操作系统路径分隔符

语法示例如下

path.sep

​path.sep​​​ 用于获取当前操作系统中路径的分隔符的, 如果是在Linux操作系统中运行那么获取到的是左斜杠 ​​/​​​ 如果是在Windows操作系统中运行那么获取到的是右斜杠 ​​\​

console.log(path.sep);

路径的格式化处理

语法示例如下

path.parse(path): 用于将路径转换成对象

path.parse()
let obj = path.parse("/a/b/c/d/index.html");
console.log(obj);

path.format(pathObject): 用于将对象转换成路径

let obj = {
root: '/',
dir: '/a/b/c/d',
base: 'index.html',
ext: '.html',
name: 'index'
};
let str = path.format(obj);
console.log(str);

拼接路径

语法示例如下

path.join([...paths]): 用于拼接路径, 注意点, 如果参数中没有添加 ​​/​​​, 那么该方法会自动添加, 如果参数中有 ​​..​​, 那么会自动根据前面的参数生成的路径, 去到上一级路径

let str = path.join("/a/b", "c");
console.log(str);
let str = path.join("/a/b", "/c");
console.log(str);
let str = path.join("/a/b", "/c", "../");
console.log(str);
let str = path.join("/a/b", "/c", "../../");
console.log(str);

规范化路径

语法示例如下

path.normalize(path): 用于规范化路径

let res = path.normalize("/a//b///c////d/////index.html");
console.log(res);

计算相对路径

语法示例如下

path.relative(from, to): 用于计算相对路径

let res = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
console.log(res);

如上方法参数的解释

  • 第一个参数:/data/orandea/test/aaa
  • 第二个参数:/data/orandea/impl/bbb

计算过程如下


/data/orandea/test/aaa → ../ → /data/orandea/test

/data/orandea/test → ../ → /data/orandea

最终结果:....\impl\bbb


解析路径

语法示例如下

path.resolve([...paths]): 用于解析路径,注意点: 如果后面的参数是绝对路径, 那么前面的参数就会被忽略

let res = path.resolve('/foo/bar', './baz');
console.log(res);
let res = path.resolve('/foo/bar', '../baz');
console.log(res);
let res = path.resolve('/foo/bar', '/baz');
console.log(res);