首页 > 编程语言 >Node.js入门(4):内置模块 path

Node.js入门(4):内置模块 path

时间:2023-03-12 14:00:34浏览次数:52  
标签:Node index src 路径 js path dirname

前言

上文讲解了 Node.js 的 CommonJS 规范,它主要用来解决模块化的问题。从本文开始将会介绍 Node.js 常用的模块,包括内置模块以及好用,好玩的第三方模块。

本篇简单介绍下 ​​path​​ 模块的用法。

path 模块

​path​​ 模块提供了用来处理目录和文件路径的工具方法。

目前主流的操作系统有 Windows,Mac OS 和 Linux。其中后两者都是类Unix系统,因此他们的文件系统是类似的。

这两类系统在处理目录和文件路径时存在一定差异:

  • Windows:使用 \ 、\\ 作为路径分隔符
  • Linux/Mac OS:使用 / 作为路径分隔符

如果我们在 Windows 系统上编写了程序,放到 Linux 上去运行,就有可能因为路径而出现问题。

使用 ​​path​​ 模块,帮助处理路径,就能避免这个问题。除了解决因差异化造成的问题,该模块还可以提供了一些常用的封装,比如要获取文件的扩展名,可以调用​​path.extname​​ 方法。

path.join

用于拼接路径。

const path = require('path')

// 使用操作系统的路径分隔符,将路径拼接起来
path.join('a', 'b', 'index.js') // a\b\index.js
path.join('/a', 'b', 'index.js') // \a\b\index.js

// 会处理待拼接路径中的关系
path.join('/a', 'b', '..', 'index.js') // \a\index.js

path.resolve

返回一个绝对路径。

// 不传参数时,返回 node 命令执行时所在的目录的绝对路径,并非是当前文件模块所在的目录路径。
// 比如在 /a目录下,执行 `node index.js` 则返回 `/a`
// 若是在 /b 目录下,执行 `node /a/index.js`,返回的则是 `/b`
path.resolve()

// 由于上面的特性,在使用该方法时,通常都会加上一个全局变量 __dirname,表示当前目录的绝对路径。
// 这样就能拼接出一个我们想要的路径了
path.resolve(__dirname, 'index.js');

区分 ​​join​​ 和 ​​resolve​

这个两个方法都用来解析和处理路径:

  • join:重点在拼接。将已知的路径拼接成一个标准的路径
  • resolve:重点在绝对路径。将已有的路径处理成一个标准的绝对路径

path.basename

返回路径中的基础名字,也就是最后一个分隔符后面的部分。

如果是目录,则返回目录名。若是文件名,默认返回带扩展名的文件名。通过指定参数 ext 决定是否带扩展名。

// 如果目录后也带分隔符,会被忽略掉
path.basename('src/utils') // utils

path.basename('src/utils/format.js') // format.js

// 通过指定第二个参数,若匹配上,则输出不带后缀的文件名
path.basename('src/utils/format.js', '.js') // format

path.dirname

获取路径目录名,也就是路径最后一部分的上级目录路径。

path.dirname('src/utils/format.js') // src/utils

path.dirname('src/utils) // src

path.extname

获取路径的扩展名。

path.dirname('src/utils/format.js') // .js

// 如果路径是一个目录
path.dirname('src/utils/) // 返回空

// 如果带有多个扩展名,只获取最后一个
path.dirname('src/utils/format.cjs.js) // .js

path.parse

将路径信息转换为一个对象。

path.parse('/root/hello/index.js');

{
root: '/',
dir: '/root/hello',
base: 'index.js',
ext: '.js',
name: 'index'
}

可见,它把我们上面通过 ​​basename​​,​​dirname​​,​​extename​​ 方法获得的结果就解析好了。

path.format

和上一个方法的作用相反,将路径对象转换成路径字符串。

path.format({
root: '/',
dir: '/root/hello',
base: 'index.js',
ext: '.js',
name: 'index'
})

'/root/hello/index.js'

path.normalize

将路径格式化为符合当前操作平台的正常的路径。

path.normalize('/a\\b///c/d'); // \a\b\c\d

path.isAbsolute

判断路径是否是绝对路径。返回一个布尔值。

path.isAbsolute('/root');  true

path.isAbsolute('./root'); false

path.sep

获取平台的文件路径分隔符。

path.sep; // win: '\' linux: '/'

path.delimiter

获取平台的分隔符。

path.delimiter) // win: ';' linux: ':'

小结

本篇总结了一些 ​​path​​ 模块的常用方法。其中最常用的就是 ​​path.join​​ 和 ​​path.resolve​​ 了。还有一些不常用的,也无需特意去记忆,在用到的时候去查阅官方文档就行了。


标签:Node,index,src,路径,js,path,dirname
From: https://blog.51cto.com/u_12382805/6115792

相关文章

  • 秒杀面试题!JS中this指向的理解和运用
     1.引言本文旨在讲解JavaScript中的this指向的概念和运用,帮助前端开发者更好地理解和应用this关键字。 2.this的概念在JavaScript中,this是一个关键字,用于指向当前......
  • Day08-Json补充
    JSON一.JSON1JSON回顾JavaScript对象文本表示形式(JavaScriptObjectNotation:js对象简称)【1】json在js中是一个对象,在java中是字符串【2】json是目前前后......
  • node使用multer进行文件上传
    开场白在平时的业务中,我们很多使用都会有文件上传这个功能。今天分享一下使用node+element-ui实现一下文件上传。请个人大佬指点一番~~~。批评的时候稍微轻一点。毕竟......
  • Android Js交互,调起Js中的方法
    //调用PC端方法例如方法名为:editBtn()if(Build.VERSION.SDK_INT<18){mWebView.loadUrl("javascript:editBtn()");......
  • angular响应式表单 setValue和pathValue的区别
    <p>把表单控件分组</p><form[formGroup]="profileForm"(ngSubmit)="onSubmit()"><labelfor="first-name">FirstName:</label><!--配合表单使用要用"......
  • Docker json文件配置
    点击查看代码[root@master0~]#cat/etc/docker/daemon.json{"exec-opts":["native.cgroupdriver=systemd"],"log-driver":"json-file","log-opts":{......
  • JS中进行字符串的相等比较时用==遇到的坑
    场景JS中使用==来判断两个字符串是否相等。遇到坑的代码:varselect_id=Cookies.get("select_id");if(select_id==undefined){select_id="1"}如果说Cookie......
  • Sqlserver中使用ISNULL、CAST、CASE完成对jsTree数据的查询
    场景在上面中使用的查询jsTree数据的语句为:SELECTid,ISNULL(CAST(pidASVARCHAR(50)),CAST('#'ASVARCHAR(50)))parent,icon,text,num,org_class......
  • js Set 去重优化
    场景:往tempListExtra塞入数据,返回过滤后的数组。constarr=[...tempListExtra,...extraOpt];constset=newSet();constduplication=arr.filter((item:any)=>......
  • js 分钟 转 小时
     1functionminute(75){2if(MM<0){3return''4}5varss=MM%606ss<10?(ss='0'+s......