在
nodejs
中,使用path
内置模块处理路径、拼接路径,为开发提供了便利和程序的准确性。
在 commonjs
中,安装node
后直接 require
进行导入即可
const path = require("path")
path模块的API解析:
1. basename()
返回最后一部分
path.basename(path, [,suffix])
path
- 路径suffix
- 要删除的后缀,(可选)
该方法返回 path 的最后一部分,并省略最后一部分的目录分隔符
例如:
path.basename('D:\zj\test.json') 返回 "test.json"
path.basename('D:\zj\test.json', '.json') 返回 "test"
2. dirname()
返回目录名
path.dirname(path)
path
- 路径
该方法返回 path 的目录名,尾随的目录分隔符被忽略
例如:
path.dirname('D:\zj\test.json') 返回 "D:\zj"
3. extname()
返回后缀
path.extname(path)
path
- 路径
方法返回 path 的后缀名,查找以 .已经后面的string,
如果path最后一部分没有.的话,或者除了第一个字符之外没有.的话,就返回空字符串
例如:
1. path.extname('D:\zj\test.json') 返回 ".json"
2. path.extname('.index') 返回 ""
3. path.extname('.index.md') 返回 ""
4. format()
拼接字符串
path.format(pathObject)
pathobject
- 具有以下属性的js
对象dir
root
base
name
ext
返回将对象中的属性拼接,但是不会像 path.join() 那样用自动识别用目录分隔符将路径参数拼接起来
但是:
1. 有 dir 则忽略 root
2. 有 base 则忽略 name 和 ext
例如:
1. path.format({
dir: '/zj',
root: '/data',
base: '/text.js',
name: '/a.js',
ext: '/b.js'
})
返回 "/zj/text.js"
2. path.format({
dir: '/zj',
root: '/data',
name: '/a',
ext: '/b.js'
})
返回 "/zj/a/b.js"
5. isAbsolute()
判断 path 是否为绝对路径
path.isAbsolute(path)
path
例如:
1. path.isAbsolute('C:\zj') 返回true
2. path.isAbsolute('zj/') 返回false
6. join()
拼接路径
path.join([…paths])
...paths
- 路径片段的序列
path.join()将根据所在的操作系统使用该平台的目录分隔符,规范化拼接路径
例如:
1. linux:
path.join('a', 'b', 'c') 返回 "a/b/c"
2. windows:
path.join('a', 'b', 'c') 返回 "a\b\c"
7. normalize()
规范化给定的 path ,并会解析 … 和 .
path.normalize(path)
path
- 路径
注释:
1. 如果 path 里面有 .. 会解析到上级输出
2. 如果 path 里面有连续的 / 或者 \ ,会保留一个分隔符
例如:
1. path.normalize('/zj/data/a/..') 返回 "/zj/data"
2. path.normalize('C:temp\\\\/\\/\\/foo/bar') 返回 "C:\\temp\\foo\\bar"
8. parse()
返回解析 path ,返回对象为 path 的重要元素组成
path.parse(path)
-
path
- 路径 -
返回: 返回具有以下属性的对象
dir
root
base
name
ext
与 path.format() 相反,
返回对象属性的含义: 例如 path="E:\\zj\\download\\info.txt",
1. root: 根目录,比如:windows下的 "E:\\" 或者 linux下的 "/"
2. dir: 目录,"E:\\zj\\download"
3. base: 文件名+后缀,"info.txt"
4. name: 返回文件名除后缀,"info"
5. ext: 返回后缀,".txt"
例如:
path.parse("E:\zj\download\info.txt")
返回:
{
root: 'E:\\',
dir: 'E:\\zj\\download',
base: 'info.txt',
ext: '.txt',
name: 'info'
}
9. relative()
返回 from 到 to 的相对路径
path.relative(from, to)
from
- 第一个路径to
- 第二个路径
例如:
path.relative("D:\\zj\\electron\\electron_vue", "D:\\zj\\electron\\grpc_electron\\build")
返回 ..\grpc_electron\build
10. resolve()
返回绝对路径,如果拼接不成绝对路径则返回当前工作目录
path.resolve([…paths])
...paths
- 路径或路径片段的序列
path.resolve()方法会从后向前去拼接绝对路径,直到从后向前找到绝对路径后,返回。
例如:
1. path.resolve('/foo/bar', './baz');
返回 '/foo/bar/baz'
2. path.resolve('/foo/bar', '/tmp/file/');
返回 '/tmp/file'
11. sep
提供指定平台的 目录分隔符
path.sep
注释:
1. linux === /
path.sep = /
2. windows === \
path.sep = \