## 路徑處理
在開發命令行程序的時候,我們經常需要做路徑的拼接、轉換、相對路徑和絕對路徑互轉,拆分路徑等,這個時候,使用`NodeJs`的內置模塊[path](http://nodejs.cn/api/path.html)就能輕松搞定這些問題。
[TOC]
### path的引用
~~~
var path = require('path');
~~~
### path常用方法
#### path.basename
* `path.basename(path[, ext])`
* `path <String>`
* `ext <String> 可選的文件擴展名`
* `返回: <String>`
`path.basename() `方法返回一個` path `的最后一部分,類似于` Unix `中的 `basename `命令。
例子:
~~~
path.basename('/foo/bar/baz/asdf/quux.html')
// 返回: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html')
// 返回: 'quux'
~~~
如果 path 不是一個字符串或提供了` ext `但不是一個字符串,則拋出 `TypeError`。
#### path.extname
* ` path.extname(path)`
* `path <String>`
* `返回: <String>`
`path.extname() `方法返回 `path `的擴展名,即從 `path `的最后一部分中的最后一個 .(句號)字符到字符串結束。 如果 `path `的最后一部分沒有 . 或 `path` 的文件名(見 `path.basename()`)的第一個字符是 .,則返回一個空字符串。
~~~
path.extname('index.html')
// 返回: '.html'
path.extname('index.coffee.md')
// 返回: '.md'
path.extname('index.')
// 返回: '.'
path.extname('index')
// 返回: ''
path.extname('.index')
// 返回: ''
~~~
如果` path` 不是一個字符串,則拋出 `TypeError`。
#### path.join
* `path.join([...paths])`
* `...paths <String>` 一個路徑片段的序列
* `返回: <String>`
>`path.join() `方法使用平臺特定的分隔符把全部給定的 `path `片段連接到一起,并規范化生成的路徑。
>長度為零的 `path` 片段會被忽略。 如果連接后的路徑字符串是一個長度為零的字符串,則返回 '.',表示當前工作目錄。
例子:
~~~
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// 返回: '/foo/bar/baz/asdf'
path.join('foo', {}, 'bar')
// 拋出 TypeError: path.join 的參數必須為字符串
~~~
如果任一路徑片段不是一個字符串,則拋出` TypeError`。
#### path.resolve
* `path.resolve([...paths])`
* `...paths <String> 一個路徑或路徑片段的序列`
* `返回: <String>`
>**`path.resolve() `方法會把一個路徑或路徑片段的序列解析為一個絕對路徑。**
>給定的路徑的序列是從右往左被處理的,后面每個` path `被依次解析,直到構造完成一個絕對路徑。 例如,給定的路徑片段的序列為:/`foo、/bar、baz`,則調用 `path.resolve('/foo', '/bar', 'baz') `會返回` /bar/baz`。
>**如果處理完全部給定的 `path` 片段后還未生成一個絕對路徑,則當前工作目錄會被用上。**
>生成的路徑是規范化后的,且末尾的斜杠會被刪除,除非路徑被解析為根目錄。
>長度為零的` path `片段會被忽略。
>**如果沒有傳入 `path `片段,則` path.resolve() `會返回當前工作目錄的絕對路徑。**
例子:
~~~
path.resolve('baz', 'js','test');//最常用
//如果當前工作目錄為 /foo/bar
//則返回 ‘/foo/bar/baz/js/test
path.resolve('/foo/bar', './baz')
// 返回: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/')
// 返回: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// 如果當前工作目錄為 /home/myself/node,
// 則返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
~~~
### path API地址
**Node.js中文網path的API:http://nodejs.cn/api/path.html**