path 模块是 node 用于整理、转换、合并路径的神器,只要是路径问题,都可以交给它处理。
但它仅仅是处理路径字符串,而不会去坚持或处理文件。
path.normalize
路径整理
做项目时,往往都是基于相对路径,于是经常会出现类似这样的路径 path//upload/../file/./123.jpg
。
当然这个是把所有坑都写到一起了,不过就算这样的路径,path.normalize
分分钟搞定。
1 | var path = require('path'); |
path.join
拼接路径
那些奇葩路径往往都是自己拼接导致的,如果用一些工具帮助我们处理这,就可以直接得到规范的路径了,而且不需要担心跨平台问题。这里的 path.join
就可以帮助我们生产跨平台,规范化的路径字符串。
1 | var path = require('path'); |
这个方法虽然方便,但是参数只能是字符串,否则会抛出错误(0.10以上版本)。
path.resolve
绝对路径
这个绝对路径操作,跟上面的不太一样,如果你懂命令行 cd
命令,那就秒懂了,否则需要花点时间多跑几个例子才能理解。这次直接上官方例子。
1 | path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile'); |
相当于命令行下的
1 | cd foo/bar |
他的解析不是在是简单的拼接关系,而是类似 cd
命令的解析了。
path.relative
相对路径
有绝对就有相对,有时我们有两个绝对路径, 我们需要从中找出相对目录的起源目录。
1 | path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb') |
path.dirname
文件路径
根据一个文件或目录得到它所在的目录路径,这个很常用。
1 | var path = require('path'); |
path.basename
获取路径中的文件名
确切的说是返回最后一个路径分割后面的文件名,不论是文件还是目录,第二个参数可以忽略文件后缀。
1 | var path = require('path'); |
代码都是简单易懂的。
path.extname
文件后缀
确切说,就是返回最后一个 .
之后的字符串,没有则返回空。
1 | var path = require('path'); |
path.parse
解析路径
把一个路径解析为一个 {root:'', dir:'', base:'', ext:'', name:''}
这样的对象。
有时候要获取文件名,文件后缀,文件目录,这样到省事了,直接搞定。上官方例子。
1 | path.parse('/home/user/dir/file.txt') |
path.format
生成路径
正好跟 path.parse
相反,这个则是根据 {root:'', dir:'', base:'', ext:'', name:''}
这样的对象来生成字符串。上官方例子。
1 | path.format({ |
其他属性
还有一些属性,如 path.sep
不同平台下的文件路径分隔符,win 是 \\
,*nix 则是 /
。path.delimiter
字面解释,这才是分隔符,但这个往往是环境变量中出现的,win 是 ;
,*nix 则是 :
,你们懂的。
还有两个奇葩属性,path.posix
和 path.win32
他们都包含上面这些方法属性,前者跨平台,后者只是win上。
不知道为什么要单独搞两个这样的属性。
好了,争取每天学习一点基础,只有把这些基础知识梳理一遍,才能更好的掌握 node。