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) =&gt; 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') =&gt; '..'

提取路径的组成部分 path.dirname(p), path.basename(p[,ext]), path.extname(p)

path.dirname => 文件路径中的目录部分
path.basename => 文件路径中的文件部分
path.extname => 文件路径中的文件扩展名