path
一、path
1.1 认识
二、path.basename(path[, suffix])
path.basename() 方法返回path的最后一部分,类似于Unix basename命令。
语法
const result = path.basename(path(必填),ext(可选));
- path: 路径
- ext: 可选的文件扩展名
返回值
返回path的最后一部分的字符串
场景:
-
获取最后一级目录
const Path = require('path');
console.log(__dirname); // /Users/zhangwenqiang/Desktop/practice/Node/node-api
const result = Path.basename(__dirname);
console.log(result); // node-api -
获取文件名,带后缀
const Path = require('path');
const result = Path.basename("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
console.log(result); // path.js -
获取文件名,不带后缀
const Path = require('path');
const result = Path.basename("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js",".js");
console.log(result); // path
三、path.delimiter
path.delimiter 提供特定于平台的路径定界符
语法
const Path = require('path');
const result = Path.delimiter;
console.log(result);
返回值
返回特定于平台的路径定界符字符串
场景
-
返回特定于平台的路径定界符
const Path = require('path');
const result = Path.delimiter;
console.log(result);
四、path.dirname(path)
path.dirname(path) 方法返回 path 的目录名,类似于 Unix dirname 命令。
语法
const result = Path.dirname(path<string>);
返回值
场景
-
获取目录的上级目录
const Path = require('path');
console.log(__dirname); // /Users/zhangwenqiang/Desktop/practice/Node/node-api
const result = Path.dirname(__dirname);
console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node -
获取文件所在目录
const Path = require('path');
const result = Path.dirname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api
五、path.extname(path)
path.extname(path) 方法返回 path 的扩展名,即 path 的最后一部分中从最后一次出现的 .(句点)字符到字符串的结尾。 如果 path 的最后一部分中没有 .,或者除了 path 的基本名称(参见 path.basename())的第一个字符之外没有 . 个字符,则返回空字符串。
语法
const result = path.extname(path<string>);
返回值
场景
-
获取一段路径的后缀名-没有 . 字符: 返回空字符串
const Path = require('path');
const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path");
console.log(result); // 空字符串 -
获取一段路径的后缀名-只有 . 字符: 返回 . 字符串
const Path = require('path');
const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.");
console.log(result); // . -
-
获取一段路径的后缀名-有完整的 .后缀名: 返回完整的后缀名
const Path = require('path');
const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
console.log(result); // .js
-
六、path.format(pathObject)
path.format(pathObject) 方法从对象返回路径字符串。 这与 path.parse() 相反。
语法
const result = path.format({
dir:string,
root:string,
base:string,
name:string,
ext:string,
})
- dir: 目录: 如果有 dir 目录,会忽略 root 根目录
- root: 根目录: 如果有 dir 目录,那么会忽略 root 根目录
- base: 带后缀的文件名: 如果有 base 带后缀的文件名,那么会忽略 name 和 ext
- name: 不带后缀的文件名
- ext: 后缀
返回值
场景
-
根据目录和文件名拼接路径
const Path = require('path');
const result = Path.format({
dir:'/node',
base:'api.js'
});
console.log(result);
七、path.matchesGlob(path, pattern)
八、path.isAbsolute(path)
path.isAbsolute(path) 方法确定path是否为绝对路径。
语法
const result = path.isAbsolute(path:string);
返回值
布尔值
场景
-
判断路径是否为绝对路径
const Path = require('path');
const result1 = Path.isAbsolute("/practice/Node/node-api");
console.log(result1) // true
const result2 = Path.isAbsolute("./practice/Node/node-api");
console.log(result2); // false
九、path.join([...paths])
path.join([...paths]) 方法使用特定于平台的分隔符作为定界符将所有给定的path片段连接在一起,然后规范化生成的路径。
语法
const result = path.join(path1:string,path2:string,path3:string,……);
场景
-
拼接路径-不带
/
const Path = require('path');
const result = Path.join("a","b","c","d");
console.log(result); // a/b/c/d -
拼接路径-带
/
const Path = require('path');
const result = Path.join("/a","/b","/c","/d");
console.log(result); // /a/b/c/d -
拼接路径-带
/
和不带/
const Path = require('path');
const result = Path.join("/a","/b","c","d");
console.log(result); // /a/b/c/d -
凭借路径-带
..
返回上一级const Path = require('path');
const result = Path.join("/a","/b","/c","/d","..");
console.log(result); // /a/b/c
十、path.normalize(path)
path.normalize(path) 方法规范化给定的path,解析 .. 和 . 片段。
语法
const result = path.normalize(path:string);
场景
-
获取规范化的路径
const Path = require('path');
const result = Path.normalize("/a/b/c/d/..");
console.log(result); // /a/b/c
十一、path.parse(path)
path.parse(path) 方法返回一个对象,其属性表示path的重要元素。
语法
const result = path.parse(path:string);
返回值
result = {
dir: string
root: string
base: string
name: string
ext: string
}
场景
-
获取路径字符串各个部分: 目录、文件名
const Path = require('path');
const result = Path.parse("/a/b/c/d.js");
console.log(result); // { root: '/', dir: '/a/b/c', base: 'd.js', ext: '.js', name: 'd' }
十二、path.posix
path.posix 属性提供对 path 方法的 POSIX 特定实现的访问。换句话来说,通过path.posix 可以根据不同系统做相关兼容处理,力保输出的结果在不同平台下是一致的。对于path.posix的理解:
- windows 系统: windows 系统分不同的磁盘,然后磁盘下面都是树状结构的文件和文件夹。windows 使用
\
来分割目录或者文件,如D:\node\api.js
- Unix 系统或者 Mac 系统: 系统不分盘符,只有一个根目录
/
。系统通过/
来分割目录和文件,如/user/node/api.js
通过path.posix.Path API 保证在windows下或者Unix或者Mac下的系统输出一致,都为/
语法
const result1 = path.posix.join([...paths:string]);
const result2 = path.posix.resolve([...paths:string]);
……path.posix.Path API
返回值
场景
-
兼容不同系统的
path.join()
结果// windows 系统下的结果:
const result = Path.join("a","b","c");
console.log(result); // a\b\c
// Mac 系统下的结果:
const result = Path.join("a","b","c");
console.log(result); // a/b/c
// 兼容下的结果:
const result = Path.posix.join("a","b","c");
console.log(result); // a/b/c -
兼容不同系统的
path.resolve()
结果// windows 系统下的结果:
const result = Path.resolve("a","b","c");
console.log(result); // D:\practice\Node\a\b\c
// Mac 系统下的结果:
const result = Path.resolve("a","b","c");
console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api/a/b/c
// 兼容下的结果:
const result2s = Path.posix.resolve("a","b","c");
console.log(result2s); // /practice/Node/node-api/a/b/c
十三、path.relative(from, to)
path.relative(from,to) 方法根据当前工作目录返回从 from 到 to 的相对路径。 如果 from 和 to 都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串。
语法
const result = path.relative(from:string,to:string);
返回值
场景
-
获取两个路径之间的相对路径
const Path = require('path');
const result = Path.relative('/a/b/c/d','/a/b/e/f');
console.log(result); // ../../e/f
十四、path.resolve([...paths])
path.resolve([...paths]) 方法将路径或路径片段的序列解析为绝对路径。给定的路径序列从右到左处理,每个后续的path会被追加到前面,直到构建绝对路径。
语法
const result = path.resolve(path1:string,path2:string,path3:string);
返回值
场景
-
获取绝对路径-path1 本身为绝对路径: 解析到 path1 为止构建成绝对路径
const Path = require('path');
const result = Path.resolve('/a','b','c');
console.log(result); // /a/b/c -
获取绝对路径-path1 不是绝对路径: 解析到 path1 后,拼接当前工作目录构建成绝对路径
const Path = require('path');
const result = Path.resolve('a','b','c');
console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api/a/b/c
十五、path.sep
path.sep 提供特定于平台的路径片段分隔符
语法
const result = path.sep;
场景
-
获取特定平台的路径片段分隔符
const Path = require('path');
const result = Path.sep;
console.log(result); // /