这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战
nodejs 的一个主要优势就是可以进行跨平台操作,我们只需要很少的努力,就可以保证我们的代码可以运行在 windows、linux 和 OSX 上面。
path 模块为我们提供了跨平台需要的工具,抹平了 windows 和 linux、OSX 的简称) 下的路径不同,如果自己拼接字符串的话,在这方面很容易出现问题,比如实际上:
path.join('foo', 'bar')
// 'foo/bar' 在 linux、OSX 上
// 'foo\\bar' 在 windows 上
path.resolve
作用:遍历文件系统
path.resolve 可以让你在文件系统中移动,但是保持平台兼容性。可以理解为一系列的 cd 命令,最后输出单个路径。
path.resolve('../', '/../', '../')
// '/home' 在 Linux
// '/Users' 在 OSX
// 'C:\\Users' 在 Windows
path.resolve('foo', 'bar')
// '/Users/xxx/foo/bar' OSX
path.normalize
作用:创建可靠的路径
如果你发现你在做这样的事情
let filePath = '/home/george/../folder/code';
你应当使用 path.normalize 帮助你在不同的平台显示正确的路径
var filePath = path.normalize('/home/george/../folder/code');
// '/home/folder/code'
这个方法做的事情主要有
- 规范目录分割符
- 将当前目录应用于相对路径
- 计算路径中相对路径(.)和父目录(..)
- 调整制定字符
path.join
作用:合并文件夹名称
像我们在之前看到的,如果我们使用字符串拼接的方式,拼接路径,在不同平台上可能会有问题。
如果希望合并路径,需要使用 path.join,使结果正常化
path.join('foo', '..', 'bar', 'baz/foo');
// 'bar/baz/foo' linux、OSX
// 'bar\\baz\\foo' windows
path.basename
作用:返回 path 的最后一部分
第一个参数是 path 路径,第二个参数是扩展名,匹配时会区分大小写
path.basename('/foo/bar/index.html')
// 'index.html'
path.basename('/foo/bar/index.html', '.html')
// 'index'
path.basename('/foo/bar/index.HTML', '.html')
// 'index.HTML'
path.dirname
作用:返回路径的目录名
path.dirname('/foo/bar/baz/asdf/quux');
// '/foo/bar/baz/asdf'
path.extname
作用:返回路径的扩展名,匹配规则是最后一部分中,最后一个句点(.)到最后一个字符结尾
path.extname('index.html');
// '.html'
path.extname('index');
// ''
path.extname('.index');
// ''
以上为 path 模块的简单用法,欢迎点赞和评论~