path的join和resolve的使用區別
阿新 • • 發佈:2019-01-15
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的使用區別