Node.js?中常用內(nèi)置模塊(path?路徑模塊)
前言
進(jìn)行服務(wù)端開發(fā),少不了對各種路徑的處理,之前我們是簡單粗暴的使用字符串的方法來對路徑進(jìn)行拼接或截取等操作。
Node.js
官方為我們提供了一個專門用來處理路徑的模塊:path模塊
,這個模塊提供了一系列的方法和屬性,用來滿足用戶對路徑的處理需求。
路徑拼接:join方法
path
模塊中有一個join
方法,能夠非常智能的進(jìn)行路徑拼接:
使用path.join()
方法,可以把多個路徑片段拼接為完整的路徑字符串
const path = require("path"); // 拼接/a和/b const pathStr = path.join("/a", "/b"); console.log(pathStr); // '\a\b'
join
方法會識別當(dāng)前操作系統(tǒng),判斷應(yīng)當(dāng)使用正斜杠(/
)還是反斜杠(\
)
因為我使用的是Windows
,所以生成的是“\a\b
”(反斜杠),如果在Linux
系統(tǒng)下則會生成“/a/b
”(正斜杠),這就是join
相比簡單的字符串拼接('/a'+'/b'
)更智能的一點
我們在寫路徑時,習(xí)慣于使用正斜杠(/
),但在Windows
系統(tǒng)中文件路徑默認(rèn)使用的是反斜杠(\
):
但我們在Windows
系統(tǒng)中訪問路徑時,正反斜杠都可以正常訪問:
但Linux系統(tǒng)中文件路徑只能使用正斜杠?。?!
join
方法另一個智能的地方在于:它會會識別并匹配相對路徑的寫法
const path = require("path"); // 注意:join方法會識別并匹配相對路徑的寫法 // 如下../c會替換掉/b(相當(dāng)于找上一級的c而不是/b),所以最后拼接成的路徑為\a\c const pathStr1 = path.join("/a", "/b", "../c"); console.log(pathStr1); // '\a\c' // const pathStr1 = path.join("/a", "/b", "../../c"); // console.log(pathStr1); // '\c' // const pathStr1 = path.join("/a", "/b", "./c"); // console.log(pathStr1); // '\a\b\c' // const pathStr1 = path.join("/a", "/b", "c/d"); // console.log(pathStr1); // '\a\b\c\d'
在一些目錄結(jié)構(gòu)復(fù)雜的項目,使用相對路徑可能會不盡人意,所以我們也經(jīng)常使用絕對路徑來避免一些不必要的麻煩,但我們?nèi)绾沃酪粋€目錄的絕對路徑呢?
Node.js
中有一個全局變量:__dirname
,它代表了當(dāng)前目錄的絕對路徑
通過絕對路徑訪問文件:
const path = require("path"); const fs = require("fs"); fs.readFile(path.join(__dirname, "/static/index.txt"), "utf-8", (err, data) => { if (err) { return console.log("讀取文件出錯!", err); } console.log("文件內(nèi)容", data); });
獲取文件名:basename方法
使用path.basename()
方法,可以從一個文件路徑中,獲取到文件的名稱部分。
basename
方法有兩個參數(shù):
- 第一個參數(shù)必傳,表示文件的路徑第
- 二個參數(shù)可選,表示文件的后綴名(也叫擴展名)
不傳第二個參數(shù)可獲取文件完整名(包含后綴):
const path = require("path"); // 一個用于測試的文件路徑 const fpath = "./static/index.txt"; // 獲取完整文件名(帶擴展名) const fullName1 = path.basename(path.join(__dirname, fpath)); console.log(fullName1); // index.txt
傳第二個參數(shù)時,獲取的是不含后綴的文件名:
const path = require("path"); // 一個用于測試的文件路徑 const fpath = "./static/index.txt"; // 指定basename的第二個參數(shù)為文件的擴展名,來獲取不帶擴展名的文件名 const fullName2 = path.basename(fpath, ".txt"); console.log(fullName2); // index
注意:如果第二個參數(shù)填的后綴與文件實際后綴不符合,則獲取到的依舊是文件的完整名(包含后綴)
const path = require("path"); // 一個用于測試的文件路徑 const fpath = "./static/index.txt"; const fullName2 = path.basename(fpath, ".js"); console.log(fullName2); // index.txt
獲取文件擴展名:extname方法
extname方法可用來獲取文件的擴展名:
const path = require("path"); // 一個用于測試的文件路徑 const fpath = "./static/index.txt"; // 獲取文件擴展名 const fullName1 = path.extname(path.join(__dirname, fpath)); console.log(fullName1); // .txt
結(jié)語
這一節(jié)比較簡單,主要介紹了path
模塊的幾個常用方法,到此這篇關(guān)于Node.js 中常用內(nèi)置模塊(path 路徑模塊)的文章就介紹到這了,更多相關(guān)Node.js path 模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Node.js項目APM監(jiān)控之New Relic
本篇文章主要介紹了Node.js項目APM監(jiān)控之New Relic,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Node.js 實現(xiàn)搶票小工具 & 短信通知提醒功能
這篇文章主要介紹了Node.js 實現(xiàn)搶票小工具 & 短信通知提醒功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10