node.js中的path模塊

在 Node.js 中,path 模塊提供了處理和操作文件路徑的功能,其中 path.join 和 path.resolve 是兩個常用的方法。它們在處理路徑時有不同的行為和用途:

功能概述

  • path.join(): 該方法主要用于將多個路徑片段拼接成一個完整的路徑字符串。它會正確處理路徑分隔符(在Windows系統中是\,在Linux和macOS系統中是/),并且會忽略空字符串片段。
  • path.resolve(): 此方法用于將相對路徑轉換為絕對路徑。它會從當前工作目錄開始,解析每個路徑片段,遇到..會向上一級目錄回溯,遇到.則表示當前目錄,會被忽略。
路徑拼接方式

1.path.join():按照傳入的路徑片段順序進行拼接,使用系統特定的路徑分隔符連接各個片段。
示例代碼:

const path = require('path');
// 連接多個路徑片段
console.log(path.join('/目錄1', '/目錄2', '目錄3')); // 輸出: /目錄1/目錄2/目錄3
// 忽略長度為零的路徑片段
console.log(path.join('/目錄1', '', '目錄3')); // 輸出: /目錄1/目錄3
// 如果連接后的路徑字符串為空,則返回當前工作目錄
console.log(path.join('', '', '')); 

2.path.resolve():從當前工作目錄開始解析路徑,遇到..會向上一級目錄回溯,遇到.則表示當前目錄,會被忽略。
示例代碼:

const path = require('path');
// 解析為絕對路徑
console.log(path.resolve('/目錄1', '/目錄2', '目錄3')); // 輸出: /目錄2/目錄3
// 使用當前工作目錄
console.log(path.resolve('目錄1', '目錄2', '目錄3')); // 輸出: 當前工作目錄/目錄1/目錄2/目錄3
// 移除尾部斜杠
console.log(path.resolve('/目錄1', '目錄2/')); // 輸出: /目錄1/目錄2
返回路徑類型
  1. path.join():返回的是一個相對路徑或者根據傳入片段組合而成的路徑字符串,它不會將路徑解析為絕對路徑,除非傳入的路徑片段本身就是絕對路徑。
  2. path.resolve():總是返回一個絕對路徑。如果所有傳入的路徑片段都是相對路徑,那么它會基于當前工作目錄來生成絕對路徑;如果傳入了絕對路徑片段,它會從第一個絕對路徑片段開始解析。

示例代碼:

const path = require('path');
// 相對路徑拼接
console.log(path.join('folder1', 'folder2')); 
// 輸出 folder1\folder2 (Windows)或 folder1/folder2 (Linux/macOS)// 轉換為絕對路徑
console.log(path.resolve('folder1', 'folder2')); 
// 假設當前工作目錄是 C:\Users\example,輸出類似 C:\Users\example\folder1\folder2 (Windows)
處理特殊路徑片段
  • path.join():會直接將...作為普通路徑片段進行拼接,不會對其進行特殊處理來改變路徑層級。
    示例代碼:
const path = require('path');
console.log(path.join('folder1', '..', 'folder2')); 
// 輸出 folder1\..\folder2 (Windows)或 folder1/../folder2 (Linux/macOS)
  • path.resolve():遇到..會向上一級目錄回溯,遇到.則表示當前目錄,會被忽略。
    示例代碼:
const path = require('path');
console.log(path.resolve('folder1', '..', 'folder2')); 
// 假設當前工作目錄是 C:\Users\example,輸出類似 C:\Users\example\folder2 (Windows)

使用場景

  1. path.join():適用于在已知的相對路徑基礎上,按照特定順序拼接新的路徑片段,生成新的相對路徑。例如,在構建項目時,拼接資源文件的相對路徑。
  2. path.resolve():在需要將相對路徑轉換為絕對路徑,或者獲取某個文件或目錄的絕對路徑時使用。比如,在Node.js應用中,獲取配置文件的絕對路徑,以確保在不同工作目錄下都能準確找到文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90260.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將Scrapy項目容器化:Docker鏡像構建的工程實踐

引言:爬蟲容器化的戰略意義在云原生與微服務架構主導的時代,??容器化技術??已成為爬蟲項目交付的黃金標準。據2023年分布式系統調查報告顯示:92%的生產爬蟲系統采用容器化部署容器化使爬蟲環境配置時間??減少87%??Docker化爬蟲的故障…

Unity × RTMP × 頭顯設備:打造沉浸式工業遠控視頻系統的完整方案

結合工業現場需求,探索如何通過大牛直播SDK打造可在 Pico、Quest 等頭顯設備中運行的 RTMP 低延遲播放器,助力構建沉浸式遠程操控系統。 一、背景:沉浸式遠程操控的新趨勢 隨著工業自動化、5G 專網、XR 技術的發展,遠程操控正在從…

HTTPS如何保障安全?詳解證書體系與加密通信流程

HTTP協議本身是明文傳輸的,安全性較低,因此現代互聯網普遍采用 HTTPS(HTTP over TLS/SSL) 來實現加密通信。HTTPS的核心是 TLS/SSL證書體系 和 加密通信流程。一、HTTPS 證書體系HTTPS依賴 公鑰基礎設施(PKI, Public K…

數據的評估與清洗篇---清洗數據

處理前的準備 檢查索引與列名 在處理內容之前,需要先看看索引或列名是否有意義,若索引和列名都是亂七八糟的,應該對他們進行重命名或者重新排序,以便我們理解數據。 清洗數據 清洗數據原則 針對數據內容,一般先解決結構性問題,再處理內容性問題。整潔數據的特點是: …

Ubuntu apt和apt-get的區別

好的,這是一個非常經典且重要的問題。apt install 和 apt-get install 的區別是很多 Ubuntu/Debian 新手都會遇到的困惑。 簡單來說,它們的功能非常相似,但設計目標和用戶體驗不同。 一句話總結 apt 是 apt-get 的一個更新、更友好、更現代化…

多端適配災難現場:可視化界面在PC/平板/大屏端的響應式布局實戰

摘要精心設計的可視化大屏,在平板上顯示時圖表擠成一團,在PC端操作按鈕小到難以點擊,某企業的可視化項目曾因多端適配失敗淪為“災難現場”,不僅用戶差評如潮,還被競爭對手嘲諷技術落后。多端適配真的只能靠“反復試錯…

Vulnhub Web-Machine-N7靶機攻略(附VB安裝教程)

1.VB安裝 安裝地址:https://download.virtualbox.org/virtualbox/7.1.12/VirtualBox-7.1.12-169651-Win.exe 下載好后直接打開即可開始安裝。安裝前先打開任務管理器(搜索框直接搜索即可)查看性能里面的虛擬化是否打開。 開始安裝。 這里顯…

vite搭建react-ts項目,@別名配置

vite搭建react-ts項目,別名配置一、配置別名二、輸入/能索引文件三、解決找不到模塊“/pages/home”或其相應的類型聲明一、配置別名 vite.config.ts文件 import { defineConfig, loadEnv, type ConfigEnv, type UserConfig } from "vite"; import reac…

AWS OpenSearch 搜索排序常見用法

背景介紹 AWS OpenSearch是AWS的一個檢索分析服務&#xff0c;是基于開源的Elasticsearch 7.x分支fork出來的獨立的一個代碼倉庫&#xff0c;做了獨立的維護&#xff0c;加入了一些自己的優化&#xff0c;本文在這里主要介紹是常見的基礎用法 引入相關依賴<dependency>&l…

深度分析Java內存結構

Java內存結構是JVM的核心機制&#xff0c;直接關系到程序性能、并發能力和穩定性。下面從規范、實現到實踐進行深度分析&#xff1a;一、JVM規范定義的內存區域 1. 程序計數器&#xff08;Program Counter Register&#xff09; 作用&#xff1a;存儲當前線程執行的字節碼指令地…

vs2019 創建MFC ActiveX的詳細步驟

第一步 創建1個MFC ActiveX控件工程 添加方法 輸入方法名稱選擇返回類型點擊 添加參數&#xff0c;最后點擊確認&#xff0c;如下圖 添加的Add方法 注意&#xff0c;如需要添加1個指針類型的參數&#xff0c;需要手動輸入* 最后編譯&#xff0c;如編譯出現下圖錯誤&#xf…

pyarmor加密源代碼

使用低版本python 避免出現加密限制&#xff0c;無法加密情況 環境&#xff1a;python3.9.9 安裝 pyinsatller 及 pyarmor pip install pyinsatller pyarmor添加 其它pyinstaller 打包參數 一定在下邊正式打包命令運行前執行 具體參考 https://pyarmor.readthedocs.io/zh/stabl…

MACOS安裝配置Gradle

一、概述 gradle的運行高度依賴jvm版本&#xff0c;所以在安裝之前一定要先安裝jdk&#xff0c;同時gradle版本必須與jdk版本對應&#xff0c;不然在項目編譯的時候會報版本不兼容導致編譯不成功的問題。 官方說明地址 以下是官方列出關系對應版本的關系列表&#xff1a; 本文…

1.1.2 建筑構造要求

1、建筑構造的影響因素1&#xff09;荷載因素&#xff08;受力&#xff09;&#xff1a;結構自重、活荷載、風荷載、雪荷載、地震作用2&#xff09;環境因素&#xff1a;自然因素&#xff08;風吹、日曬、雨淋、積雪、冰凍、地下水、地震等&#xff09;、人為因素&#xff08;火…

gig-gitignore工具實戰開發(一):項目愿景與藍圖規劃

文章目錄gig-gitignore工具實戰開發&#xff08;一&#xff09;&#xff1a;項目愿景與藍圖規劃 &#x1f680;&#x1f631; 一、痛點&#xff1a;被忽視的.gitignore&#x1f3af; 二、愿景&#xff1a;.gitignore的全生命周期管理&#x1f6e0;? 三、核心功能規劃&#x1f…

C# 基于halcon的視覺工作流-章22-直線查找

C# 基于halcon的視覺工作流-章22-直線查找 本章目標&#xff1a; 一、創建直線卡尺工具&#xff1b; 二、測量及擬合直線&#xff1b; 三、匹配批量查找&#xff1b;尋找整圖中所有直線&#xff0c;可用霍夫直線查找等算法&#xff0c;而尋找圖片中指定區域的直線&#xff0c;除…

統計與大數據分析與數學金融方向課程差異有哪些?如何提升職場競爭力?

準大一新生在選擇專業時&#xff0c;常常會在 “統計與大數據分析” 和 “數學金融” 之間猶豫不決。這兩個專業看似都與數字、模型打交道&#xff0c;課程設置存在一定交叉&#xff0c;但核心方向又各有側重。深入了解它們的異同&#xff0c;能為專業選擇和學習規劃提供更清晰…

游戲開發Unity/ ShaderLab學習路徑

掌握 ShaderLab 需要循序漸進地學習&#xff0c;結合理論、實踐和工具。以下是一個推薦的學習路徑&#xff0c;幫助你從零基礎逐步進階&#xff1a; 階段一&#xff1a;基礎準備 (理解核心概念與環境)必備知識&#xff1a; 編程基礎&#xff1a; 至少熟悉一種編程語言&#xff…

算法----二叉搜索樹(BST)

系列文章目錄 算法----滑動窗口 算法----二叉樹 文章目錄系列文章目錄二叉搜索樹心法&#xff08;特性篇&#xff09;二叉搜索樹心法&#xff08;基操篇&#xff09;1、判斷 BST 的合法性2、在 BST 中搜索元素3、在 BST 中插入一個數4、在 BST 中刪除一個數二叉搜索樹心法&…

GitHub Actions打包容器,推送 AWS ECR 并使 EKS 自動拉取以完成發版部署

以下是關于 EKS 直接拉取 ECR 鏡像的解答&#xff0c;以及如何通過 GitHub Actions 將項目打包為容器、推送至 AWS ECR 并使 EKS 自動拉取以完成發版部署的詳細步驟。當前時間為 2025 年 7 月 23 日下午 12:27 HKT&#xff0c;基于最新技術實踐提供方案。1. EKS 直接拉取 ECR 鏡…