【8.20】nodejs 应用 - path 模块边学边练

337 阅读2分钟

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战

翻译自:shapeshed.com/writing-cro…

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 模块的简单用法,欢迎点赞和评论~