const absolutePath = path.join(__dirname, some, dir);
vs.
const absolutePath = path.resolve(__dirname, some, dir);
path.join
將串連__dirname其是與平臺特定的隔板
其中作爲
path.resolve
將處理__dirname
,some
和dir
即some
和dir
值級聯當前文件的目錄名從左到右通過處理它。
如果任何some
或dir
值的考慮它作爲根
中序,以更好地瞭解對應於一個根路徑,然後前面的路徑將被省略過程休息的概念讓我解釋一下這兩個有點詳細如下: -
path.join
和path.resolve
是由nodejs提供的路徑模塊的兩種不同方法或功能。
如果兩者都接受路徑列表,但差異出現在結果中,即它們如何處理這些路徑。
path.join
使用特定於平臺的分隔符作爲分隔符將所有給定的路徑段連接在一起,然後規範化結果路徑。而path.resolve()
處理從右到左的路徑序列,每個後續路徑都被預置直到構建絕對路徑。
當沒有參數提供
下面的例子會幫助你清楚地瞭解兩個概念: -
我的文件名是index.js
和當前工作目錄是E:\MyFolder\Pjtz\node
const path = require('path');
console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equalent to __dirname
結果
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve()
方法將輸出絕對路徑,其中path.join()
返回。代表當前工作目錄,如果當某根路徑作爲參數傳遞
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
結果,我
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join()
只有串接輸入列表與特定的平臺沒有提供
分隔符,而path.resolve()
處理從右到左的路徑序列,每個後續路徑p直到建立絕對路徑爲止。
Nit:'__dirname'是包含正在執行的源文件的目錄的絕對路徑,而不是*當前工作目錄*。前者總是一樣的(除非你移動文件);後者是[進程範圍參數](https://nodejs.org/docs/latest/api/process.html#process_process_cwd),根據您啓動節點的方式以及您是否[已更改] (https://nodejs.org/docs/latest/api/process.html#process_process_chdir_directory)。 – josh3736
那麼''__dirname''和'''path.resolve(__ dirname)'''沒有區別嗎? – georaldc