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

简介: 【Node.js】深度解析常用核心模块-path模块

相对路径和绝对路径


相对路径和绝对路径的概念


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


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


  • 相对路径 : 相对于当前位置的路径 (以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对)


路径特殊符号


"./" ------ 代表目前所在的目录,相对路径

"../" ------ 代表上一层目录,相对路径

"../../" ------ 代表的是上一层目录的上一层目录,相对路径

"/" ------ 代表根目录,绝对路径

"C:/users/" ------ 代表根目录,绝对路径


示例:


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


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

0.png


  • 绝对路径



<!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)。


成功引入:

8bc95c95cd4843c097f4fb08928a8233.png


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


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

path.join([...paths])


参数解读:


  1. …paths < string > 路径片段的序列
  2. 返回值: < 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])


参数解读:


  1. path: 文件路径
  2. ext: 文件扩展名


代码示例:



const path = require('path')
// 定义文件的存放路径
const fpath = '/a/b/c/index.html'
const fullName = path.basename(fpath)
console.log(fullName) // index.html
const 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 … ]为选填项,路径源;


参数解读:


  1. from : 源路径
  2. 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模块的一个小拔高,继续加油吧!


相关文章
|
11月前
|
JavaScript 前端开发
在Node.js中,如何合理使用模块来避免全局变量的问题?
在Node.js中,如何合理使用模块来避免全局变量的问题?
581 167
|
11月前
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
345 18
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
507 62
|
缓存 资源调度 JavaScript
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
2044 0
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
163 0
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
146 0
|
9月前
|
JavaScript Unix Linux
nvm与node.js的安装指南
通过以上步骤,你可以在各种操作系统上成功安装NVM和Node.js,从而在不同的项目中灵活切换Node.js版本。这种灵活性对于管理不同项目的环境依赖而言是非常重要的。
2919 11
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
1163 155
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
12923 24

热门文章

最新文章

推荐镜像

更多
  • DNS
  • 下一篇
    开通oss服务