path 中方法使用及 __dirname 和 __filename
一、__dirname 和 __filename
1. 概念
1. __dirname 可以用來動態獲取當前文件所屬目錄的絕對路徑
2. __filename 可以用來動態獲取當前文件的絕對路徑,包含當前文件
// __dirname 和 __filename 是不受執行 node 命令所屬路徑影響的
2. 測試
// 測試 js 文件文件路徑為: E:\前端相關\demo_js\test\31.path.js
console.log('__dirname->', __dirname)
console.log('__filename->', __filename)
// 輸出: __dirname-> E:\前端相關\demo_js\test
// 輸出: __filename-> E:\前端相關\demo_js\test\31.path.js
二、path 中方法使用
1. path.join()
path.join() 方法是將多個參數字符串合並成一個路徑字符串
// 當前的文件路徑為: E:\前端相關\demo_js
const path = require('path')
console.log(path.join(__dirname, 'a', 'b', 'demo.js')) // E:\前端相關\demo_js\test\a\b\demo.js
// 路徑開頭的 / 不會影響拼接,.. 即(cd ..)代表上一級文件
console.log(path.join(__dirname, '/a', '/b', '..')) // E:\前端相關\demo_js\test\a
// path.join() 會做路徑字符串的校驗,不合法時會拋錯: The "path" argument must be of type string. Received an instance of Object
console.log(path.join(__dirname, '/a', {}, '/b'))
2. path.resolve()
path.resolve() 方法是以程序為根目錄,作為起點,根據參數解析出一個絕對路徑。
以應用程序為根目錄,普通字符串代表子目錄,/ 代表絕對路徑根目錄
// 當前執行的 js 文件路徑為: E:\前端相關\demo_js\test\31.path.js
const path = require('path')
// 得到應用程序啟動文件的目錄(得到當前執行文件絕對路徑)
console.log(path.resolve()) // E:\前端相關\demo_js\test
// 解釋: / 斜杠代表根目錄,一般拼接的時候需要小心點使用 / 斜杠
console.log(path.resolve('a', '/b')) // E:\b
// 這個就是將文件路徑拼接,並不管這個路徑是否真實存在
console.log(path.resolve(__dirname, 'a/b')) // E:\前端相關\demo_js\test\a\b
// 這個是用當前應用程序啟動文件絕對路徑與后面的所有字符串拼接,因為最開始的字符串不是以 / 開頭的,.. 也是代表上一級目錄
console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')) // E:\前端相關\demo_js\test\wwwroot\static_files\gif\image.gif