node中的path.resolve

LittleJoo發表於2018-05-14

path.resolve([arg1,arg2,…])根據引數的不同,返回值存在兩種情況。

以下為引數的兩種情況:

1.每個引數都不帶`/`,比如path.resolve(),或者path.resolve(`path1`,`path2`),或者path.resolve(`./path`);

2.一個或多個引數最開頭帶`/`符號 path.resolve(`/path`);

返回值分別為:

1.絕對路徑

2.相對路徑

 

下面具體分析:

1.引數為空:

*path.resolve()或者paht.resolve(“)

輸出:當前檔案所在資料夾路徑  === __dirname

 

2.引數為資料夾名字(引數>=1):

*path.resolve(`path`)

輸出:當前檔案所在資料夾絕對路徑/path

*或者 path.resolve(`path1`,`path2`)

輸出:當前檔案所在資料夾絕對路徑/path1/path2

*或者 path.resolve(`path1`,`path2`…….`pathX`)

輸出:當前檔案所在資料夾絕對路徑/path1/path2...../pathX

3. 某個引數為`./`+檔名

*path.resolve(`./path`)

輸出:當前檔案所在資料夾絕對路徑/path

*或者path.resolve(`path1`,`./path2`)

輸出:當前檔案所在資料夾絕對路徑/path1/path2

 

 

4.資料夾名字前加了`/`

注意,無論是第幾個檔案前加了/!!!最終路徑都為:/+‘最後一個前面加/的檔案檔名’+‘剩下資料夾’

好的,我知道上面那句話很難懂,那就看例子

4.1.path.resolve(`/path`)

輸出: /path

4.2.

4.2.1path.resolve(`path1`,`path2`,`/path3`) 

*前兩個path前沒有斜槓,只最後一個有

輸出: /path2

4.2.2.path.resolve(`path1`,`/path2`,`/path3`)

*後面兩個path都有斜槓

輸出:/path2

看到沒,跟path1,path2,根本沒有任何關係,因為最後一個path2前面有斜槓/,所以地址為path2

4.3.path.resolve(`path1`,`/path2`,`path3`) 

*path2有斜槓,後面的path3沒有斜槓

輸出: /path2/path3

 

 

總結:

if(當path.resolve引數中不存在最開頭帶/的引數時)

  return 絕對路徑

else

  return /+‘最後一個前面加/的檔案檔名’+‘剩下資料夾’

 

帶/的引數:舉個例子來解釋就是 `/path`。 注:不包括`./path`

相關文章