path.join 與 path.resolve 的區別

 

對比

舉一個簡單的例子html

const path = require('path'); 

console.log(__dirname);                    
//D:\myProgram\test
let myPath = path.join(__dirname,'/img/so');         //D:\myProgram\test\img\so 
let myPath2
= path.join(__dirname,'./img/so');        //D:\myProgram\test\img\so
let myPath3
= path.resolve(__dirname,'/img/so');       //D:\img\so<br>
let myPath4
= path.resolve(__dirname,'./img/so');       //D:\myProgram\test\img\so


 

總結

path.join()方法能夠鏈接任意多個路徑字符串。要鏈接的多個路徑可作爲參數傳入。webpack

path.join()方法在接邊路徑的同時也會對路徑進行規範化web

 

path.resolve()方法能夠將多個路徑解析爲一個規範化的絕對路徑。其處理方式相似於對這些路徑逐一進行cd操做,與cd操做不一樣的是,這引發路徑能夠是文件,而且可沒必要實際存在(resolve()方法不會利用底層的文件系統判斷路徑是否存在,而只是進行路徑字符串操做)。ui

 

resolve的詳解能夠參考:spa

https://www.cnblogs.com/zytt/p/9038598.htmlcode

 

 

 

 

 

 

 

 

 

1. 對於以/開始的路徑片斷,path.join只是簡單的將該路徑片斷進行拼接,而path.resolve將以/開始的路徑片斷做爲根目錄,在此以前的路徑將會被丟棄,就像是在terminal中使用cd命令同樣。htm

path.join('/a', '/b') // 'a/b'
path.resolve('/a', '/b') // '/b'

 

2. path.resolve老是返回一個以相對於當前的工做目錄(working directory)的絕對路徑。blog

path.join('./a', './b') // 'a/b'
path.resolve('./a', './b') // '/Users/username/Projects/webpack-demo/a/b'
相關文章
相關標籤/搜索