【Node.js】02 —— Path模块全解析

devtools/2024/9/20 2:06:27/ 标签: node.js, 前端, javascript, 后端

在这里插入图片描述

🌟Node.js之Path模块探索🌈

📚引言

在Node.js的世界中,path模块就像一把万能钥匙🔑,它帮助我们理解和操作文件与目录的路径。无论你是初入Node.js殿堂的新手,还是久经沙场的老兵,理解并掌握path模块的各种方法都至关重要💫。

🌲什么是Path模块

path 模块是Node.js内置的一个核心模块,专门用于处理和解析文件/目录路径,提供了跨平台的路径相关操作功能💻 MacOS、Linux、Windows等系统下路径的差异性问题,path模块已经帮我们做了很好的封装和适配。

💻实战演练:Path模块常用方法详解

path.join()

作用: 将多个路径片段拼接成一个完整的路径。

javascript">const path = require('path');
let fullPath = path.join('/Users', 'myUser', 'Documents', 'project');
console.log(fullPath); // 输出: '/Users/myUser/Documents/project'

path.resolve()

作用: 将一个路径或路径片段的序列解析为绝对路径。

javascript">let resolvedPath = path.resolve('src', '..', 'images', 'logo.png');
console.log(resolvedPath); // 输出: '/absolute/path/to/images/logo.png' (取决于当前工作目录)

path.basename()

作用: 提取路径的最后一部分(文件名或目录名)。

javascript">let fileName = path.basename('/home/user/documents/file.txt');
console.log(fileName); // 输出: 'file.txt'

path.dirname()

作用: 提取路径中的目录部分。

javascript">let dirName = path.dirname('/home/user/documents/file.txt');
console.log(dirName); // 输出: '/home/user/documents'

path.extname()

作用: 提取路径中的扩展名部分。

javascript">let extension = path.extname('index.html');
console.log(extension); // 输出: '.html'

path.isAbsolute()

作用: 判断给定的路径是否为绝对路径。

javascript">let isAbsPath = path.isAbsolute('/home/user');
console.log(isAbsPath); // 输出: true

path.normalize()

作用: 规范化并解析路径,统一路径分隔符并在必要时添加尾部斜线。

javascript">let normalizedPath = path.normalize('./folder//file.txt');
console.log(normalizedPath); // 输出: './folder/file.txt' 或 '/full/path/to/folder/file.txt' (根据当前目录)

path.relative()

作用: 计算从一个路径到另一个路径的相对路径。

javascript">let relativePath = path.relative('/root/dir1', '/root/dir2/subdir');
console.log(relativePath); // 输出: '../dir2/subdir'

path.parse()

作用: 解析路径字符串,返回一个具有各部分属性的对象。

javascript">let parsedPath = path.parse('/home/user/docs/index.html');
console.log(parsedPath);
// 输出: { root: '/', dir: '/home/user/docs', base: 'index.html', ext: '.html', name: 'index' }

path.format()

作用: 根据提供的对象生成路径字符串。

javascript">let pathObject = { root: '/', dir: '/home/user/docs', base: 'index.html', ext: '.html', name: 'index' };
let formattedPath = path.format(pathObject);
console.log(formattedPath); // 输出: '/home/user/docs/index.html'

🌀关于跨平台兼容性

  • Node.js的path模块在处理路径时,会自动识别运行环境并转换为对应的路径格式(例如:Windows下的\和*nix系统下的/)。

  • 如果你需要确保路径始终以特定于平台的分隔符结束,可以结合path.sep来使用。例如:

javascript">let directoryPath = path.join('myDir', 'subDir') + path.sep;
console.log(directoryPath); // Windows下输出: 'myDir\\subDir\', *nix下输出: 'myDir/subDir/'

综上所述,Node.js的path模块提供了丰富且强大的路径操作功能,无论是日常的文件操作,还是复杂的项目构建流程,熟练掌握并合理运用这些方法都将极大提升我们的开发效率和服务性能✨。而理解这些底层机制,也是成为一名优秀的Node.js开发者所必需的基础素质之一🎯。


http://www.ppmy.cn/devtools/15892.html

相关文章

卡口车辆智能检索系统

卡口车辆智能检索系统是基于海量卡口图像和视频数据,通过智能化的信息挖掘、模式匹配及快速搜索等智能图像处理技术,完成车辆、车型、车身颜色、车辆特征、相似车辆搜索等核心业务功能,扩展基于治安卡口数据的应用手段。 卡口车辆智能检索系…

在【laravel框架】学习中遇到的常见的问题以及解决方法

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【设计模式】享元模式

目录 什么是享元模式 代码实现 什么是享元模式 Java中的享元模式(Flyweight Pattern)是一种结构型设计模式,它用于减少系统中对象的数量,以节省内存和提高性能。享元模式通过共享相似对象之间的公共部分来最小化内存使用。 在享…

react之组件与JSX

第一章 - 描述用户界面 概述:React是一个用于构建用户界面(UI)的JavaScript库,用户界面由按钮,文本和图像等小单元内容构建而成。React帮助你把它们组合成可重用,可嵌套的组件。从web端网站到移动端应用&a…

Flink容错机制

Flink的容错机制是一个复杂而精细的系统,旨在确保在分布式流处理过程中,即使在发生故障的情况下,也能保持数据的一致性和计算的正确性。以下是对Flink容错机制的详细阐述: 首先,Flink的容错机制建立在状态一致性的基础…

ATECLOUD测试系统如何检测电机驱动模块

电机驱动模块是驱动电机的电路模块,通过将电源提供的电能转化为电机所需的电能,来控制电机的启停、转速和旋转方向等。为了保证电机可以正常运行,需要对电机模块进行各项指标检测,评估电机驱动模块的性能。 西安某军工方向科技公司…

牛客NC209 最短无序连续子数组【中等 数组,双指针 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/d17f4abd1d114617b51e951027be312e 思路 解题思路 1、方法1,排序对比:将数组按升序排序,然后与原数组对照,从哪里开始变化到哪里结束变化的数组就是答案。 2、 方…

使用uni-app开发app时遇到mqtt.js不可用的问题

使用uni-app开发app时遇到mqtt.js不可用的问题 1 问题背景 基于 Vue3 版本创建了 uni-app 项目用于开发微信小程序,项目中用到了 mqtt.js(v4.1.0),编译为微信小程序能够正常运行,但是编译为 APP 后,控制台…

【Java EE】文件内容的读写——数据流

目录 1.InputStream概述 1.1方法 2.FileInputStream概述 2.1构造方法 2.2代码示例 2.3.利用Scanner进行字符读取 3.OutputStream概述 3.1方法 3.2利用OutputStreamWriter进行字符写入 3.3利用PrintWriter找到我们熟悉的方法 1.InputStream概述 1.1方法 修饰符及返回…

3.8设计模式——State 状态模式(行为型)

意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构 Context(上下文)定义客户感兴趣的接口;维护一个ConcreteState子类的实例,这个实例定义当前状态。State(状态)定义…

综合练习

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 下面我们通过一些实战练习加深对存储过程和函数的认识 以 scott 用户下 emp 数据表为基础,创建如下过程 (1)以部门编号为输入参数,查询该部门的平均…

浅理解vue2中的模板编译

vue组件实例在初始化完成各种状态数据后,会触发vm.$mount()方法来进行模板编译阶段,有两种触发方式 // 方法一:主动触发 new Vue({ el: #app }) if (vm.$options.el) {vm.$mount(vm.$options.el); }// 方法二:手动调用 new Vue()…

2024深圳杯C题的8页思路分析+所有代码可执行+参考文献+持续更新参考论文(已经更新了代码与图像)

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的,大家可以参考我往期的资料,所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意:(建议先下单占坑,因为随着后续我们更新资料数…

《QT实用小工具·四十二》圆形发光图像

1、概述 源码放在文章末尾 该项目实现了图像的发光效果,特别适合做头像,项目demo演示如下所示: 项目部分代码如下所示: import QtQuick 2.7 import QtGraphicalEffects 1.12Item {id: rootwidth: 80height: 80property int ra…

Docker中Kafka容器创建/更新Topic支持多分区

前提 自行通过docker部署好kafka&#xff0c;并启动相关容器。 假设Topic为http_capture。 #docker-kafka kafka_dir/opt/docker/kafka/build sudo rm -rf ${kafka_dir}/* cat > ${kafka_dir}/docker-compose.yml <<EOF version: "3.3" services:zookeepe…

【Vue 异步更新和 $nextTick】

文章目录 异步更新机制$nextTick 方法 异步更新机制以及 $nextTick 方法都与 Vue 的响应式系统密切相关&#xff0c;对于开发高效、流畅的应用至关重要。 异步更新机制 Vue 的数据更新是异步执行的。修改 Vue 实例的数据时&#xff0c;Vue 并不会立即更新 DOM。它将数据变更放…

tiktok中的视频怎么无水印下载

在当今数字化时代&#xff0c;TikTok已经成为了年轻人们展示自我的舞台&#xff0c;无数有趣、创意的视频在这个平台上涌现。许多人想要下载TikTok上的视频时常面临一个难题&#xff1a;水印。水印是指视频上方显示的TikTok标志&#xff0c;它在一定程度上限制了用户下载视频并…

vLLM:由伯克利大学LMSYS组织开源的大语言模型高速推理框架-显著提高了大型语言模型(LLM)的服务效率

vLLM是一个由伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在提升实时场景下语言模型服务的吞吐与内存使用效率134。它是一个快速且易于使用的库,能够与HuggingFace无缝集成134。vLLM的核心是PagedAttention算法,这是一种新颖的注意力算法,通过引入操作系统的虚拟内…

基于享元模式实现连接池

享元模式 结构 享元&#xff08;Flyweight &#xff09;模式中存在以下两种状态&#xff1a; 1. 内部状态&#xff0c;即不会随着环境的改变而改变的可共享部分。 2. 外部状态&#xff0c;指随环境改变而改变的不可以共享的部分。享元模式的实现要领就是区分应用中的这两 种…