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

在这里插入图片描述

🌟Node.js之Path模块探索🌈

📚引言

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

🌲什么是Path模块

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

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

path.join()

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

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

path.resolve()

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

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

path.basename()

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

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

path.dirname()

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

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

path.extname()

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

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

path.isAbsolute()

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

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

path.normalize()

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

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

path.relative()

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

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

path.parse()

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

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()

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

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来使用。例如:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最短路问题之Dijkstra算法 洛谷 单源最短路径

Dijkstra算法具体解释 Dijkstra算法用于解决单源最短路径问题,即找出从一个源节点到其他所有节点的最短路径。该算法的前提是图中不能有负权边,因为它基于贪心策略。Dijkstra算法的基本思想是通过逐步确定到达每个节点的最短路径长度来求解问题。其主要…

十、使用repo管理yocto各个layer

文章目录 使用repo管理yocto各个layer一、创建repo环境二、创建rpi robot的manifest三、实践 使用repo管理yocto各个layer 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十篇文章: 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi…

深度Q-Learning在算法交易中的应用

一、说明 在《华尔街的随机漫步》一书中,作者伯顿马尔基尔(Burton G. Malkiel)声称:“一只蒙着眼睛的猴子向报纸的财经版面投掷飞镖,可以选择一个与专家精心挑选的投资组合一样好的投资组合。 如果我们让巴甫洛夫的狗接…

[卷积神经网络]YoloV8

一、YoloV8 1.网络详解 ①backbone部分:第一次卷积的卷积核缩小(由3变为6);CSP模块的预处理卷积从3次变为2次;借鉴了YoloV7的多分支堆叠结构(Multi_Concat_Block)。 所小第一次卷积的卷积核尺寸会损失部分感受野&#…

2024年 10 款最佳免费数据恢复软件您值得收藏

免费的数据恢复软件或工具是最重要的工具之一,在我们的生活中发挥着非常重要和关键的作用,尽管现在您可以找到数十种,但事实是它们非常重要。 由于设备故障、勒索软件攻击或意外擦除数据而从设备中丢失数据可能会成为一个真正的头痛问题。 …

专题【二分查找】刷题日记

题目列表 4. 寻找两个正序数组的中位数 33. 搜索旋转排序数组 34. 在排序数组中查找元素的第一个和最后一个位置 35. 搜索插入位置 69. x 的平方根 167. 两数之和 II - 输入有序数组 209. 长度最小的子数组 222. 完全二叉树的节点个数 287. 寻找重复数 2023.04.14 4. 寻找两…

自然语言处理基础面试

文章目录 TF-IDFbag-of-wordsBert 讲道理肯定还得有Transformer,我这边先放着,以后再加吧。 TF-IDF TF(全称TermFrequency),中文含义词频,简单理解就是关键词出现在网页当中的频次。 IDF(全称…

spring boot: 使用MyBatis从hive中读取数据

一、hive表&#xff1a; 启动hiveserver2 二、添加mybatis starter和hive依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

力扣HOT100 - 24. 两两交换链表中的节点

解题思路&#xff1a; 递归 class Solution {public ListNode swapPairs(ListNode head) {if (head null || head.next null) {return head;}ListNode newHead head.next;head.next swapPairs(newHead.next);newHead.next head;return newHead;} }

什么是缓存?在NGINX中如何配置缓存以提升性能?

缓存是一种在计算机系统中常用的技术&#xff0c;用于存储临时数据副本&#xff0c;以便在将来的请求中更快地访问这些数据。缓存可以显著提升应用程序和网站的性能&#xff0c;因为它可以减少对后端服务器或数据库的重复请求&#xff0c;从而减少响应时间并降低资源消耗。 在W…

案例实践 | InterMat:基于长安链的材料数据发现与共享系统

案例名称&#xff1a;InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点&#xff0c;1万注册用户 案例背景 材料是构成各种装备和工程的物质载体&#xff0c…

驱动开发-windows驱动设计目标

驱动程序和应用程序不一样的&#xff0c;由于其直接运行于windows r0级&#xff0c;故对于开发有更多和更严格的标准&#xff0c;一般会有以下一些常见的设计目标: 安全性、可移植性、可配置性、 可被中断、多处理器安全、可重用 IRP、 支持异步 I/O这些是基本目标。 1. 安全…

高频前端面试题汇总之Vue篇

1. Vue的基本原理 当一个Vue实例创建时&#xff0c;Vue会遍历data中的属性&#xff0c;用 Object.defineProperty&#xff08;vue3.0使用proxy &#xff09;将它们转为 getter/setter&#xff0c;并且在内部追踪相关依赖&#xff0c;在属性被访问和修改时通知变化。 每个组件实…

Flutter 之 HTTP3/QUIC 和 Cronet 你了解过吗?

虽然 HTTP3/QUIC 和 cronet 跟 Flutter 没太大关系&#xff0c;只是最近在整理 Flutter 相关资料时发现还挺多人不了解&#xff0c;就放到一起聊聊。 本篇也是主要将现有资料做一些简化整合理解。 前言 其实为什么会有 HTTP3/QUIC &#xff1f;核心原因还是现有协议已经无法满…

前端工程搭建:

搭建前端工程最主要的是技术选型&#xff0c;如果技术选型不够全面或不合适&#xff0c;会出现很多问题。技术选型通常会涉及基础框架、打包构建工具、网络库、组件库、CSS预编译语言、状态管理、IDE、代码质量检查工具、包管理工具、版本控制工具等 CSS预编译语言 搭建工程没有…

机器学习周记(第三十五周:语义分割)2024.4.15~2024.4.21

目录 摘要 ABSTRACT 1 语义分割基本概念 1.1 数据集格式 ​编辑 1.2 语义分割评价指标 1.3 语义分割标注工具 2 转置卷积 3 FCN网络结构基本原理 摘要 本周主要学习了语义分割的基本概念及其在计算机视觉领域中的应用。了解了语义分割的几种经典网络&#xff0c;如全卷…

linux系统密码重置的方法

在linux系统中忘记密码&#xff0c;重置&#xff08;重启&#xff1a;shutdown -r now&#xff09; 1、在启动 Linux 时&#xff0c;按键盘上的上下左右键来止 Linux 的正常启动。 2、按下e鍵进入安全模式 3、找到首行是linux16&#xff0c;末尾是UTF-8的段落&#xff0c;在后门…

Python中的设计模式与最佳实践

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的设计模式与最佳实践 在软件开发中&#xff0c;设计模式是一种解决常见问题的经过…

APP开发_ js 控制手机横屏或竖屏

1 Android 控制手机横屏或者竖屏的方法 1.1 配置 AndroidManifest.xml 以横屏模式为例&#xff1a; 在 Android 开发中&#xff0c;如果想让应用或某个特定的 Activity 在运行时以横屏模式显示&#xff0c;可以通过修改 Activity 的 AndroidManifest.xml 文件中的配置来实现…

【Django】调用django的pbkdf2_sha256加密算法测试

基于django搭建的系统中&#xff0c;用到pbkdf2_sha256&#xff08;&#xff08;Password-Based Key Derivation Function 2&#xff09;&#xff09;加密算法&#xff0c;这里做些代码测试、总结。 PBKDF2简介 PBKDF2是一种基于密码的密钥派生函数&#xff0c;用于从用户提供的…