path 模块用于规范化路径连接和解析路径.
path 的功能包括不仅限于:
- 规范化路径
- 连接路径
- 路径解析
- 查找两个绝对路径的相对关系
- 提取路径的组成部分
规范化路径 path.normalize(p)
path 模块中的 normalize(p) 用来规范化路径, 可用于处理路径中的 //
, ..
, .
等.
var path = require('path');
path.normalize('./foo/bar//baz/asfd/que/..');
// 处理后
'foo/bar/baz/asfd'
`</pre>
### 连接路径 path.join([path1][, path2][, ...])
将任意个路径字符串连接, 同时也会对路径进行规范化
<pre>`var path = require('path');
//合法的字符串连接
path.join('./foo', 'bar', 'baz/asdf', 'quux', '..')
// 连接后
'foo/bar/baz/asfd'
// 不合法的字符串将抛出异常
path.join('foo',{}, bar) => TypeError: Arguments to path.join must be strings
`</pre>
### 路径解析 path.resolve([from...], to)
path.resolve 方法可以将多个路径解析为一个规范化的绝对路径, 其处理方法类似于对这些路径逐一进行 cd 操作, 与 cd 操作不同的是, 这引起路径可以是文件, 而且可不必实际存在, 仅是字符串操作
<pre>`path.resolve('foo/bar','/tmp/file/','..','a/../subfile')
`</pre>
相当于
<pre>`cd foo/bar
cd /temp/file/
cd ..
cd a/../subfile
`</pre>
如果解析的不是绝对路径, path.resolve() 会将当前工作目录加到解析结果前
<pre>`path.resolve('wooroot','bar','./baz')
// 当前工作路径是/home/node, 则输出结果是
'/home/node/wooroot/bar/baz'
`</pre>
### 查找两个绝对路径之间的相对关系 path.relative(from, to)
<pre>`path.relative('/Users/node/demo', '/Users/node') => '..'
提取路径的组成部分 path.dirname(p), path.basename(p[,ext]), path.extname(p)
path.dirname => 文件路径中的目录部分
path.basename => 文件路径中的文件部分
path.extname => 文件路径中的文件扩展名