1. 程式人生 > >path的join和resolve的使用區別

path的join和resolve的使用區別

eve join() 例如 dirname image gen dir www. ons

文章目錄

1.連接路徑:path.join([path1][, path2][, ...])

path.join()方法可以連接任意多個路徑字符串。要連接的多個路徑可做為參數傳入。

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

var path = require(‘path‘); 
//合法的字符串連接 
path.join(‘/foo‘, ‘bar‘, ‘baz/asdf‘, ‘quux‘, ‘..‘) 
// 連接後 
‘/foo/bar/baz/asdf‘ 

//不合法的字符串將拋出異常 
path.join(‘foo‘, {}, ‘bar‘) 
// 拋出的異常 TypeError: Arguments to path.join must be strings‘

2.路徑解析:path.resolve([from ...], to)

path.resolve()方法可以將多個路徑解析為一個規範化的絕對路徑。其處理方式類似於對這些路徑逐一進行cd操作,與cd操作不同的是,這引起路徑可以是文件,並且可不必實際存在(resolve()方法不會利用底層的文件系統判斷路徑是否存在,而只是進行路徑字符串操作)。例如:

path.resolve(‘foo/bar‘, ‘/tmp/file/‘, ‘..‘, ‘a/../subfile‘)

相當於

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

例子:

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/itbilu/node,則輸出結果為 
‘/home/itbilu/node/wwwroot/static_files/gif/image.gif‘

3.對比

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

path的join和resolve的使用區別