路径模块
封装了各种路径相关的操作,和 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);