位置: IT常识 - 正文

【Node.js】深度解析常用核心模块-path模块(深入node.js技术栈)

编辑:rootadmin
【Node.js】深度解析常用核心模块-path模块

推荐整理分享【Node.js】深度解析常用核心模块-path模块(深入node.js技术栈),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入node.js技术栈,nodejs深入浅出笔记,nodejs底层,node.js in action,node .js,node.js in action,深入node.js技术栈,nodejs 深入浅出,内容如对您有帮助,希望把文章链接给更多的朋友!

✅ 作者简介:一名将要迈入大三的大学生,致力于提高前端开发能力 ✨ 个人主页:前端小白在前进的主页 🔥 系列专栏 : node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 🍀 学习格言: ☀️ 打不倒你的会使你更强!☀️

🔥前言

在node.js中常用的三大模块中还有一个是path模块,主要是为了便利用户处理路径问题,如果我们在引入文件的时候经常会受到../和./的干扰,那么这个path模块将会很好的帮助你!

📃目录相对路径和绝对路径相对路径和绝对路径的概念路径特殊符号path 路径模块什么是path路径模块获取路径名path.dirname()路径拼接 path.join()获取路径中文件名 path.basename()获取路径中文件扩展名 path.extname()解析为绝对路径 path.resolve()返回相对路径 path.relative(from, to)小结相对路径和绝对路径相对路径和绝对路径的概念

在这里首先先复习一下相对路径和绝对路径:

绝对路径 : 文件真实的存放位置 (以Web 站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。其实绝对路径与相对路径的不同处,只在于描述目录路径时,所采用的参考点不同。由于对网站上所有文件而言,根目录这个参考点对所有文件都是一样的,因此,运用以根目录为参考点的路径描述方式才会被称之为绝对路径)相对路径 : 相对于当前位置的路径 (以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对)路径特殊符号

"./" ------ 代表目前所在的目录,相对路径 "../" ------ 代表上一层目录,相对路径 "../../" ------ 代表的是上一层目录的上一层目录,相对路径 "/" ------ 代表根目录,绝对路径 "C:/users/" ------ 代表根目录,绝对路径

示例: 一般情况下我们不会去使用绝对路径引入文件,一般使用相对路径,因为相对路径会更加的灵活,以及在书写的项目上线的时候使用绝对路径将很麻烦,相对路径yyds!

现在需要实现一个小功能,将该图片以不同形式引入到html文件中:

绝对路径<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><style> img { width: 1200px; height: 700px; }</style><body> <img src="/image/23on23-01_2.jpg" alt=""></body></html>

在这里使用了路径符号/,/这个符号代表了根目录(D:/node复盘/03)。

相对路径<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><style> img { width: 1200px; height: 700px; }</style><body> <img src="./image/23on23-01_2.jpg" alt=""></body></html>

在这里使用了路径符号./,./代表了目前所在的目录(D:/node复盘/03)。

成功引入:

path 路径模块什么是path路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

获取路径名path.dirname()

返回 path 的目录名。 尾部的目录分隔符将被忽略。语法格式: path.dirname(path)

代码示例:

const path = require('path')console.log(path.dirname(`D:/node/02/hello.js`)); // D:/node/02

这个方法打印出了目录名D:/node/02

路径拼接 path.join()【Node.js】深度解析常用核心模块-path模块(深入node.js技术栈)

使用 path.join() 方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下: path.join([...paths])

参数解读:

…paths < string > 路径片段的序列返回值: < string >

代码示例:

const path = require('path')// 注意: ../会抵消前面的路径const pathStr = path.join('/a','/b/c','../','./c','/d')console.log(pathStr); // \a\b\c\d

首先要引入path模块,node中引入模块使用内置的方法require(),如上例中写多个字符串,最后打印出来了\a\b\c\d,就是join的拼接功能,但是在这里要注意一点:../会抵消前面的路径,比如在案例中../抵消了/c

获取路径中文件名 path.basename()

使用 path.basename() 方法,可以获取路径中的最后一部分,常通过该方法获取路径中的文件名,语法格式如下: path.basename(path[, ext])

参数解读:

path: 文件路径ext: 文件扩展名

代码示例:

const path = require('path')// 定义文件的存放路径const fpath = '/a/b/c/index.html'const fullName = path.basename(fpath)console.log(fullName) // index.htmlconst nameWithoutExt = path.basename(fpath, '.html')console.log(nameWithoutExt) // index

当没有传入第二个参数的时候,返回的将是路径的最后部分,所以返回了index.html,当第二个参数传入时,将会在第一种情况的基础下裁剪掉第二个参数值,所以返回了index

获取路径中文件扩展名 path.extname()

使用 path.extname() 方法,返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。语法格式如下: path.extname(path) 参数path:传入的路径

代码示例:

const path = require('path')const fpath = '/a/b/c/index.html'const fext = path.extname(fpath)console.log(fext) // .html

这个方法与上边的方法不同的在于提取了后缀名!

解析为绝对路径 path.resolve()

path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径,语法格式如下: path.resolve( [from…],to ) 注 :将参数to位置的字符解析到一个绝对路径里,[from … ]为选填项,路径源;

参数解读:

from : 源路径to : 将被解析到绝对路径的字符串

代码示例:

const path = require('path)path.resolve('/foo/bar', './baz') // returns '/foo/bar/baz'path.resolve('/foo/bar', 'baz') // returns '/foo/bar/baz'path.resolve('/foo/bar', '/baz') // returns '/baz'path.resolve('/foo/bar', '../baz') // returns '/foo/baz'path.resolve('home','/foo/bar', '../baz') // returns '/foo/baz'path.resolve('home','./foo/bar', '../baz') // returns '/home/foo/baz'path.resolve('home','foo/bar', '../baz') // returns '/home/foo/baz'path.resolve('home', 'foo', 'build','aaaa','aadada','../../..', 'asset') //return '/home/foo/asset'

从后向前,若字符以 / 开头,不会拼接到前面的路径;若以../开头,拼接前面的路径,且不含最后一节路径;若连续出现多个../../..或者../..则忽略前方n(这个n代表的是出现了几个..)个..路径名进行拼接;若以./开头 或者没有符号 则拼接前面路径;

返回相对路径 path.relative(from, to)

path.relative() 方法根据当前工作目录返回 from 到 to 的相对路径。 如果 from 和 to 各自解析到相同的路径(分别调用 path.resolve() 之后),则返回零长度的字符串。 如果将零长度的字符串传入 from 或 to,则使用当前工作目录代替该零长度的字符串。

代码示例:

const path = require('path')path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');// 返回: '../../impl/bbb'

该代码表达的是对于from参数来说,to参数的位置是在哪里,通过解析后得出../../impl/bbb

小结

node的内置模块中path模块的实战操作在于当你需要获取文件的名称时候可以达到灵活使用的目的,一般情况下我们只需要文章的前四种方法,最后两种方法是对path模块的一个小拔高,继续加油吧!

本文链接地址:https://www.jiuchutong.com/zhishi/299714.html 转载请保留说明!

上一篇:每个开发人员都应该知道的 10 大安全编码实践(每个开发人员都有编制吗)

下一篇:车联网环境下自动驾驶的协同感知技术综述(基于车联网)

  • 滴滴专车可以开发票吗(滴滴专车可以开专票吗)

    滴滴专车可以开发票吗(滴滴专车可以开专票吗)

  • 微信群怎么回复某一个人的消息(微信群怎么回复某句话)

    微信群怎么回复某一个人的消息(微信群怎么回复某句话)

  • 取消候补订单为什么不退钱(取消候补会全额退款吗)

    取消候补订单为什么不退钱(取消候补会全额退款吗)

  • 轻颜相机视频怎么加长(轻颜相机视频怎么没有声音)

    轻颜相机视频怎么加长(轻颜相机视频怎么没有声音)

  • 小米手机分身有什么作用(小米手机分身有何用)

    小米手机分身有什么作用(小米手机分身有何用)

  • 华为聊天记录怎么能恢复(华为聊天记录怎么彻底删除)

    华为聊天记录怎么能恢复(华为聊天记录怎么彻底删除)

  • 未检测到红外设备是什么意思(未检测到红外设备怎么办华为)

    未检测到红外设备是什么意思(未检测到红外设备怎么办华为)

  • 菜鸟驿站身份码是什么(菜鸟驿站身份码截图有用吗)

    菜鸟驿站身份码是什么(菜鸟驿站身份码截图有用吗)

  • 朋友圈一横一点一横什么意思(朋友圈一横一点是删除好友了吗)

    朋友圈一横一点一横什么意思(朋友圈一横一点是删除好友了吗)

  • 淘宝买东西用了优惠券退款了还会回来吗(淘宝买东西用了花呗但是支付宝没有花呗可以还款吗)

    淘宝买东西用了优惠券退款了还会回来吗(淘宝买东西用了花呗但是支付宝没有花呗可以还款吗)

  • qq永久冻结怎么解冻账号(QQ永久冻结怎么办)

    qq永久冻结怎么解冻账号(QQ永久冻结怎么办)

  • 苹果icloud照片有什么用(苹果icloud照片有两个)

    苹果icloud照片有什么用(苹果icloud照片有两个)

  • vivoy93新手机充电几小时(vivoy93手机充电怎么那么慢)

    vivoy93新手机充电几小时(vivoy93手机充电怎么那么慢)

  • 华为怎么设置备忘录提醒(华为怎么设置备忘录密码)

    华为怎么设置备忘录提醒(华为怎么设置备忘录密码)

  • 苹果xr支持扩容吗(苹果xr扩容稳定吗)

    苹果xr支持扩容吗(苹果xr扩容稳定吗)

  • 微信怎么重新绑定身份证(微信怎么重新绑定手机号)

    微信怎么重新绑定身份证(微信怎么重新绑定手机号)

  • 美版a1778是什么版本(美版a1778是三网吗)

    美版a1778是什么版本(美版a1778是三网吗)

  • 腾讯视频怎么没有声音(腾讯视频怎么没有弹幕了)

    腾讯视频怎么没有声音(腾讯视频怎么没有弹幕了)

  • 号码被标记怎么取消(号码被标记怎么去除)

    号码被标记怎么取消(号码被标记怎么去除)

  • 拼多多天天领现金是真的吗(拼多多天天领现金)

    拼多多天天领现金是真的吗(拼多多天天领现金)

  • 腾讯16位的cdk在哪找(腾讯cdkey)

    腾讯16位的cdk在哪找(腾讯cdkey)

  • 打电话不接怎么查对方位置(打电话不接怎么办)

    打电话不接怎么查对方位置(打电话不接怎么办)

  • 追加评论可以删除吗(追加评论删除方法)

    追加评论可以删除吗(追加评论删除方法)

  • 华为p30pro的屏幕录制的设置在哪儿(华为p30pro的屏幕易碎吗)

    华为p30pro的屏幕录制的设置在哪儿(华为p30pro的屏幕易碎吗)

  • 十六进制转换成十进制(十六进制转换成十进制计算器)

    十六进制转换成十进制(十六进制转换成十进制计算器)

  • 微信小程序反编译简易教程与wxappUnpacker使用(微信小程序反编译2023)

    微信小程序反编译简易教程与wxappUnpacker使用(微信小程序反编译2023)

  • 如何去掉或修改DeDeCMS二级栏目标题title中的斜杠(/)?(如何去掉或修改文件夹)

    如何去掉或修改DeDeCMS二级栏目标题title中的斜杠(/)?(如何去掉或修改文件夹)

  • 北京增值税发票打印边距设置
  • 员工回家探亲的文案
  • 季度所得税申报错误,一定要更改吗
  • 季报企业所税缴税了,但年报是亏损的
  • 所有者权益变动表图片
  • 公司注册住所要求
  • 出口退税业务提醒信息包括哪些
  • 转让土地使用权属于销售无形资产吗
  • 行政事业单位长期挂账属于什么财务问题
  • 员工离职的补偿金怎么入账
  • 人力资源服务费税收编码
  • 经济纠纷的解决途径包括哪些
  • 个体工商户营业执照年检
  • 三十个生僻字
  • 财务费用利息收入在损益表中怎么填
  • 企业所得税的账载金额和实际发生额
  • 营改增后兼营非应税劳务的税务处理怎么做?
  • 简易计税项目进项
  • 企业销售应如何做
  • 如何防御黑客入侵
  • php调用mysql索引查询
  • 驾校收入与成本的关系
  • 爱沙尼亚的故事
  • 用科目汇总表怎么登记总账
  • 药品生产企业应建立
  • 东京塔的意义
  • PHP:imagecolortransparent()的用法_GD库图像处理函数
  • 个体户缴纳生产经营所得税
  • 20221年的手抄报
  • 产成品核算的内容
  • 增值税发票已经认证了,但是税票原票没给,会有什么后果
  • 其他应收款坏账处理
  • 报表里主营业务怎么填
  • 出口货物不能退税的账务处理
  • 从在建工程调整到费用
  • 增值税普票和卷式发票
  • 财务会计该如何处理客户以个人账号转款到公司公账?
  • 差旅费抵扣所得税标准
  • 可以直接在企业所得税税前扣除的是
  • 资产负债表应付职工薪酬是负数是什么原因
  • 政府补助的范围
  • 国土资源税的计税依据
  • 保教费免征增值税政策
  • 出口退税账务处理难吗
  • 营改增后不动产转让增值税
  • 垃圾清运费的收费标准乱要钱怎么办
  • 按公允价值入账的有哪些
  • 企业向个人借款利息如何缴纳增值税
  • 进项税额转出之后怎么处理
  • 公司车子折旧相差多少
  • 普通发票的金额
  • 小规模纳税人抵扣税控盘增值税怎么申报
  • 汇兑损益金额是怎么算出来的
  • MySQL主从同步原理介绍
  • 除MSSQL数据库text字段中恶意脚本的删方法
  • vista技巧:更改电源默认按钮为关机
  • u盘安装win7视频教程
  • 在Mac OS Yosemite 系统中如何发送超大邮件附件
  • 如何修改linux系统名称
  • mac系统崩溃怎么重装系统
  • win8 怎么样
  • windows8主题桌面
  • win10开启暗黑模式
  • cocos引擎教程
  • node.js的概念
  • android 自定义view onlayout
  • js原生实现call
  • ubuntu安装选哪个
  • js类继承的例子
  • 细说javascript
  • 如何查询税务是否变更
  • 福建地方税务局招聘
  • 朝阳区地方税务局官网
  • 税务申报作废后无法申报
  • 公对私转账怎么开票
  • 租赁设备能抵扣个税吗
  • 从事农业种植是干什么的
  • 小额贷款公司在职人员和离职人员情节哪种轻
  • 济南社保减免政策2020通知
  • 全面推进行政执法公示制度包含的主要内容有
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设