成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

淺談Node.js中的path模塊和常用方法

本篇文章帶大家了解一下Node.js中的 Path 模塊,介紹一下 Path 模塊的用法,以及常用的 Path 方法。

淺談Node.js中的path模塊和常用方法

Node.js path 模塊是一個內置模塊,可幫助您以獨立于操作系統的方式使用文件系統路徑。如果要構建支持 OSX、Linux 和 Windows 的 CLI 工具,則 Path 模塊是必不可少的。【推薦學習:《nodejs 教程》】

即使您正在構建一個只在 Linux 上運行的后端服務,path 模塊仍然有助于在操作路徑時避免邊緣情況。

下面我們將描述一些使用 path 模塊的常見模式,以及為什么您應該使用 path 模塊而不是將路徑操縱成字符串。

在 Node 中使用 Path 模塊

path 模塊中最常用的方法是 path.join()。該方法將一個或多個路徑段合并為一個字符串,如下所示:

const path = require('path')  path.join('/path', 'to', 'test.txt') // '/path/to/test.txt'

您可能想知道為什么要使用 path.join() 方法而不是字符串拼接。

'/path' + '/' + 'to' + '/' + 'test.txt' // '/path/to/test.txt'  ['/path', 'to', 'test.txt'].join('/') // '/path/to/test.txt'

原因主要有兩個:

  • 對于 Windows 支持。Windows 使用反斜杠()而不是正斜杠(/)作為路徑分隔符。path.join() 會為我們處理此問題。因為 path.join('data', 'test.txt') 在 Linux 和 OSX 以及 Windows 上都會返回 'data/test.txt'
  • 用于處理邊緣情況。使用文件系統路徑時,會彈出許多邊緣情況。例如,如果您嘗試手動連接兩個路徑,您可能會意外地得到重復的路徑分隔符。path.join() 方法為我們處理開頭和結尾的斜杠,如下所示:
path.join('data', 'test.txt') // 'data/test.txt' path.join('data', '/test.txt') // 'data/test.txt' path.join('data/', 'test.txt') // 'data/test.txt' path.join('data/', '/test.txt') // 'data/test.txt'

常用的 Path 方法

path 模塊還具有幾個用于提取路徑組件的方法,例如文件擴展名或目錄。

path.extname() 方法以字符串形式返回文件擴展名:

path.extname('/path/to/test.txt') // '.test'

就像連接兩條路徑一樣,獲取文件擴展名比最初看起來要復雜。

如果 path 以 . 為結尾,將返回 .。如果文件無擴展名,又不以 . 結尾,或文件沒有擴展名,將返回空值。

path.extname('/path/to/index.') // '.'  path.extname('/path/to/README') // ''  path.extname('/path/to/.gitignore') // ''

path 模塊還有 path.basename()path.dirname() 方法,分別獲取文件名(包括擴展名)和目錄。

path.basename('/path/to/test.txt') // 'test.txt'  path.dirname('/path/to/test.txt') // '/path/to'

path.parse() 方法返回一個對象,該對象包含分為五個不同組件的路徑,包括擴展名和目錄。path.parse() 方法也是不帶任何擴展名獲取文件名的方法。

path.parse('/path/to/test.txt')  /* {   root: '/',   dir: '/path/to',   base: 'test.txt',   ext: '.txt',   name: 'test' } */

使用 path.relative()

path.join()path.extname() 這樣的方法涵蓋了大多數使用文件路徑的用例。但是 path 模塊有幾個更高級的方法,例如 path.relative()

path.relative(from, to) 方法根據當前工作目錄返回從 fromto 的相對路徑。 如果 fromto 都解析為相同的路徑(在分別調用 path.resolve() 之后),則返回零長度字符串。

// 返回相對于第一條路徑的第二條路徑的路徑 path.relative('/app/views/home.html', '/app/layout/index.html') // '../../layout/index.html'

如果給定了相對于一個目錄的路徑,但需要相對于另一個目錄的路徑,則 path.relative() 方法非常有用。例如,流行的文件系統監視庫 Chokidar 提供了相對于監視目錄的路徑。

const watcher = chokidar.watch('mydir')  // 如果用戶添加 mydir/path/to/test.txt,則會打印 mydir/path/to/test.txt watcher.on('add', path => console.log(path))

這就是為什么大量的使用 Chokidar 工具。如常見的 Gatsby 或 webpack,其在內部也大量使用 path.relative() 方法。

例如,Gatsby 使用 path.relative() 方法幫助同步靜態文件目錄。

export const syncStaticDir = (): void => {   const staticDir = nodePath.join(process.cwd(), `static`)   chokidar     .watch(staticDir)     .on(`add`, path => {       const relativePath = nodePath.relative(staticDir, path)       fs.copy(path, `${process.cwd()}/public/${relativePath}`)     })     .on(`change`, path => {       const relativePath = nodePath.relative(staticDir, path)       fs.copy(path, `${process.cwd()}/public/${relativePath}`)     }) }

現在,假設用戶向 static 目錄添加了一個新文件 main.js。Chokidar 調用 on('add') 事件處理程序,路徑設置為 static/main.js。但是,當您將文件復制到 /public 時,不需要額外的 static/

調用 path.relative('static', 'static/main.js') 返回 static/main.js 相對于 static 的路徑,這正是您想要將 static 的內容復制到 public 的路徑。

跨操作系統路徑和 URL

默認情況下,path 模塊會根據 Node 進程運行的操作系統自動在 POSIX(OSX、Linux)和 Windows 模式之間切換。

但是,path 模塊確實可以在 POSIX 上使用 Windows path 模塊,反之亦然。path.posixpath.win32 屬性分別包含 path 模塊的 Posix 和 Windows 版本。

// 返回 'pathtotest.txt',與操作系統無關 path.win32.join('path', 'to', 'test.txt')  // 返回 'path/to/test.txt',與操作系統無關 path.posix.join('path', 'to', 'test.txt')

在大多數情況下,根據檢測到的操作系統自動切換 path 模塊是正確的行為。但是,使用 path.posixpath.win32 屬性對于總是希望輸出 Windows 或 Linux 樣式路徑的測試或應用程序可能會有所幫助。

例如,一些應用程序使用 path.join()path.extname() 等方法處理 URL 路徑。

// 'https://api.mydomain.app/api/v2/me' 'https://api.mydomain.app/' + path.join('api', 'v2', 'me')

這種方法適用于 Linux 和 OSX,但如果有人試圖將您的應用程序部署到一些無服務器上會發生什么?

你最終會得到 https://api.mydomain.app/apiv2me,這不是有效的 URL!如果使用 path 模塊操作 URL,則應使用 path.posix

原文地址:https://juejin.cn/post/6997799224213504037

作者:lio_zero

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产影片AV级毛片特别刺激| 82岁老人找20多岁小伙子| 一本一道波多野结衣AV一区 | 日韩A∨精品日韩在线观看| 手机在线看永久AV片免费| 性色AV 一区二区三区| 亚洲欧美偷拍内射白浆| 中文字字幕在线中文无码| А√天堂中文官网在线地址| 高清乱码一区二区三区| 狠狠色丁香婷婷综合潮喷| 老妇高潮潮喷到猛进猛出| 欧美人交A欧美精品AV一区| 色先锋AV资源中文字幕| 亚洲AV综合色区| 。国产精品麻豆成人AV网| 久久久久琪琪去精品色一到本 | 精品无码国产自产野外拍在线 | 欧美乱人伦中文字幕在线| 日日噜噜夜夜狠狠视频无码| 亚洲AV成人一区二区三区观看在| 一二三四免费观看高清视频| ZOOM与人性ZOOM怎么同步| 国产精品亚洲A∨天堂不卡| 久久国产精品成人无码网站| 欧洲精品久久久AV无码电影| 无码中文字幕日韩专区视频| 亚洲中文字幕无码AV永久| YY8098影视理论无码专区| 国产日韩精品欧美一区喷水| 乱色熟女综合一区二区三区| 日韩免费视频一一二区| 日本高清色WWW在线安全| 日本边做边吃奶AⅤ视频免费| 无人区一线二线三线乱码| 又色又爽又黄的视频APP软件下| 宝贝张开腿嗯啊高潮了视频| 少妇又紧又色又爽又刺激视频| 人与牲动ZZZXXXⅩ0000| 亚洲AV无码AV制服另类专区| 97精品久久久久中文字幕| 国产精品久久久久久久福利| 麻花传媒MV在线播放高清MBA| 少妇风流AAAAA毛片| 亚洲中文字幕AⅤ天堂| 从你的全世界路过| 久久久噜噜噜久久熟女| 四川小少妇BBAABBAA| 一女被两男吃奶玩乳尖| 国产成人精品亚洲日本语言| 美女又大又黄WWW免费网站| 无码人妻精品一区二区蜜桃不卡| 18禁黄网站男男禁片免费观看| 国产精品 精品国内自产拍| 麻豆我精产国品一二三产区区别| 无码内射中文字幕岛国片| 666西方最大但人文艺术| 国产又粗又猛又爽又黄的视频在线| 抽出含了一整夜的性器液体流出| 羞羞色男人的天堂| 40岁大乳的熟妇在线观看| 国产精品国产三级国产AⅤ| 猫咪WWW免费人成人入口| 停不了的爱在线观看| 中国在线观看免费高清完整版| 337P西西人体大胆瓣开下部 | 公车上双乳被老汉揉搓玩弄漫画| 亚洲中文字幕无码不卡电影| 日本精品少妇一区二区三区| 欧日韩无套内射变态| 久久久久精品久久九九| 狠狠色合综情丁香五月| 国产在线超清日本一本| 日日狠狠久久偷偷色| 国产欧美精品区一区二区三区| 极品少妇的粉嫩小泬看片| 激情爆乳一区二区三区| 精品少妇爆乳无码AⅤ区| 国产午夜成人无码免费看| 寡妇大J8又粗又大| 国产精品99无码一区二区| 国产午睡沙发系列大全| 成人麻豆精品激情视频在线观看| 饱满的乳被揉捏玩弄| 陈冠希实干阿娇13分钟| HEZYO东京热无码专区| 又黄又硬又湿又刺激视频免费| 无码人妻丰满熟妇区毛片18| 日本VA欧美VA欧美VA精品| 日产精品久久久久久久| 我的私人女教师3| 亚洲AV无码一区二区三区观看 | 日本处ⅩⅩ人╳护士19| 日韩精品一区二区亚洲蜜桃| 国产免费午夜福利蜜芽无码| 在线国内永久免费CRM| 国产精品第20页| 日本XXWWWXXXX| 中文字幕无码免费久久| 国产呻吟久久久久久久92| 日韩国产女人久久久| 亚洲AV无码乱码国产麻豆穿越| 在线观看成人无码中文AV天堂| 国产成人精品一区二三区| 久久se精品一区二区| 女警察受呻吟双腿大开H| 三个男人躁我一个爽视频免费| 午夜精品四季AV日日骚| 婬乱丰满熟妇XXXXⅩ性| 餐桌下他深深顶撞H| 国精品无码一区二区三区在线| 久久WWW免费人成_网站| 极品少妇被猛得白浆直流草莓| 无码人妻出轨与黑人中文字幕| 高清偷拍一区二区三区| 日本中文字幕乱码免费| 把腿张开我要CAO死你在线观看| 欧美VA亚洲VA日韩VA| 制服 丝袜 人妻 专区一本| 久久久久精品一区中文字幕| 亚洲欧美一区二区成人片牛牛| 国产无遮挡又黄又爽不要VIP网 | 久别的草原在线看电视剧| 亚洲国产成人一区二区精品区 | 粉嫩粉嫩的18在线免免费观看| 亚洲AV成人午夜亚洲美女| 不收费的十大免费好用的软件| 含羞草传媒免费进入APP老版本| 欧美成人精品欧美一级乱黄| 永久免费观看国产裸体美女| 久久久无码精品亚洲日韩精东传媒| 亚洲欧美妆和亚洲妆的区别 | 精东传媒剧国产MV的特点| 亚洲AV无码专区色爱天堂老鸭| 国产性猛交╳XXX乱大交| 少妇白浆高潮无码免费区| 粉嫩小泬无遮挡久久久久久小说| 欧美日韩一区二区三区精品视频 | 1000部啪啪未满十八勿入| 久久精品中文字幕| 中文字幕人妻成人综合永久| 免费人成在线观看网站| 99精品热这里只有精品| 欧美性受XXXX白人性爽| 初尝黑人嗷嗷叫中文字幕| 日小骚B少妇真舒服| 国产丶欧美丶日本不卡视频| 无码人妻熟妇av又大又粗浪潮| 国语对白做受XXXXX在线| 亚洲精品国产成人精品| 乱码午夜-极品国产内射| 中文字幕一区二区三区久久网站| 欧洲人激情毛片无码视频| JAPANESEMATURE亲| 少妇AAA级久久久无码精品片| 99久久国产自偷自偷免费一区| 人禽杂交18禁网站| BIGBANG幼稚视频入门幼年| 日本少妇情视频WWW| 国产成人拍精品视频午夜网站| 五月香丁激情欧美啪啪| 精品无码久久久久国产动漫3D| 一出一进一爽一粗一大视频免费的| 欧美粗大猛烈老熟妇| 成人精品一区二区三区| 偷窥丶偷拍丶妓女丶自由| 狠狠色婷婷久久综合频道毛片 | 中文字幕在线播放| 女高中生自慰污污网站 | 男人J放进女人J免费视频无遮挡| JAVAPARSERHD高潮| 天美传媒MV在线看免费| 国产亚洲欧洲综合5388| 亚洲线精品一区二区三区| 女女女女女裸体处开BBB| WWW.五月激情.COM| 色窝窝无码一区二区三区色欲| 国产欧美亚洲日韩图片| 亚洲视频无码高清在线| 欧美一区二区三区视频在线观看 | 亚洲 小说区 图片区 都市| 2021国内精品久久久久免费| 日韩精品一区二区三区四区蜜桃 | 玩弄三个高大的熟妇| 精品人妻少妇敕草AV无码专区 | 黑人巨大两根一起挤进| 中国亚州女人69内射少妇| 日本少妇内射XXⅩⅩⅩⅩⅩⅩ| 国产AV无码专区亚洲AV漫画| 亚洲毛片ΑV无线播放一区| 欧美黑人猛XXxXX内射| JAPANESE酒醉侵犯| 午夜天堂一区人妻| 蜜臀AV性久久久久蜜臀AⅤ| 亚洲AⅤ无码天堂在线观看| 啊灬啊灬啊灬快灬深视频无遮掩| 双腿白浆白丝护士高潮视频| 国产手机AV片在线无码观你| 91人人妻人人澡人人爽超污| 天天爽夜夜爽人人爽一区二区|