- cwd:當前工作目錄
- process.cwd()
- path.resolve()
- process.chdir()
- __filename:當前檔案路徑
- __dirname:當前資料夾路徑
- path.sep:路徑分隔符
- 拼接路徑
- path.normalize()
- path.join()
- path.basename()/extname
- path.parse()/format():解析和重組路徑
- path.delimiter:環境變數分隔符
pre-notify
emmm,整理一下路徑相關的東東,會更新喲!(づ ̄ 3 ̄)づ
cwd:當前工作目錄
cwd
即Current Working Directory,它的中文意思是當前工作目錄,它是一個絕對路徑。
直觀感受就是下圖中執行1.test.js
時命令列所處的目錄
process.cwd()
我們在node中可以這樣獲取 當前工作目錄
process.cwd();
複製程式碼
path.resolve()
path模組的resolve方法也能獲取當前工作目錄
path.resolve('./');
複製程式碼
和process.cwd()相比,這個方法的優勢在於它還能根據當前工作目錄往下拼接路徑
console.log(path.resolve('./','a'))
<<<輸出
當前工作目錄的絕對路徑+'/a'
複製程式碼
[danger] 注意: 如果拼接路徑時候某一個子項帶有'/',比如'/a',就會從系統根目錄下的a資料夾開始拼接,並且該項之前的拼接項都將失效。(但是在window下若子項帶有''並不會出現這個問題)
process.chdir()
此方法能改變當前的工作目錄
process.chdir('..')
複製程式碼
require()
關於require有一點需要注意的是
require
若使用相對路徑,即./
,那麼這個相對路徑是相對於當前模組的,而path.resolve
是相對於cwd
的!
另外,眾所周知的,a/b/c
,這樣的路徑會直接在node_modules
找a/b/c
。
__filename:當前檔案路徑
我們能在模組中使用__filename
來獲取當前檔案的絕對路徑。
console.log(__filename);
複製程式碼
__dirname:當前資料夾路徑
我們能在模組中使用__dirname
來獲取當前資料夾的絕對路徑。
console.log(__dirname);
複製程式碼
path.sep:路徑分隔符
path.sep
,即 separator ,路徑分隔符
console.log(path.sep); // /或\ 根據的是你當前的系統是win還是linux系列
console.log(path.win32.sep); //window \
console.log(path.posix.sep); //linux /
複製程式碼
拼接路徑
path.normalize()
該方法會對路徑進行容錯處理,主要是:
- 路徑分隔符多不多
- 有沒有
..
,有的話自動轉化
const {normalize} = require('path');
console.log(normalize('/usr///\/local/////bin')); // /usr/local/bin
console.log(normalize('usr//local/../bin')); // /usr/bin
複製程式碼
path.join()
此方法會在真正拼接路徑之前呼叫path.normalize
const {join} = require('path');
console.log(join('usr/','local','bin')); // usr/local/bin
複製程式碼
此方法中並不能使用./
來解析當前模組所處的路徑,So我們往往搭配__dirname
來進行路徑的拼接
path.join(__dirname,'a','b')
複製程式碼
path.basename()/extname
extname->檔案型別
console.log(path.extname('1.a.b.js')); // .js 取最後一個.
複製程式碼
basename->檔名
此方法還可以手動指定要去除的字尾(預設為最後一個.
以及後面的部分)
console.log(path.basename('1.a.b.js','b.js')); // 1.a.
複製程式碼
path.parse()/format():解析和重組路徑
onst {parse,format} = require('path');
const ret = parse(filePath);
console.log(ret);
// { root: '/',
// dir: '/usr/local/bin',
// base: 'no.txt',
// ext: '.txt',
// name: 'no' }
console.log(format(ret)); // /usr/local/bin/no.txt
//format若存在衝突dir和base的優先順序較高
複製程式碼
path.delimiter:環境變數分隔符
path.delimiter
,delimiter,中文意思是定界符的意思,實際上是系統變數
的分隔符。
let path = require('path');
console.log(path.delimiter);
console.log(path.posix.delimiter); // :
console.log(path.win32.delimiter); // ;
複製程式碼
檢視當前作業系統上設定的環境變數
console.log('PATH',process.env.PATH); //系統環境變數
複製程式碼