欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Node路径那些事

程序员文章站 2022-03-02 21:07:49
...
  • cwd:当前工作目录
    • process.cwd()
    • path.resolve()
    • process.chdir()
  • __filename:当前文件路径
  • __dirname:当前文件夹路径
  • path.sep:路径分隔符
  • 拼接路径
    • path.normalize()
    • path.join()
  • path.basename()/extname
  • path.parse()/format():解析和重组路径
  • path.delimiter:环境变量分隔符

pre-notify

emmm,整理一下路径相关的东东,会更新哟!(づ ̄ 3 ̄)づ

cwd:当前工作目录

cwd即Current Working Directory,它的中文意思是当前工作目录,它是一个绝对路径

直观感受就是下图中运行1.test.js时命令行所处的目录

process.cwd()

我们在node中可以这样获取 当前工作目录

process.cwd();
复制代码

path.resolve()

path模块的resolve方法也能获取当前工作目录

path.resolve('./');
复制代码

和process.cwd()相比,这个方法的优势在于它还能根据当前工作目录往下拼接路径

console.log(path.resolve('./','a'))

<<<输出
当前工作目录的绝对路径+'/a'
复制代码

[danger] 注意: 如果拼接路径时候某一个子项带有'/',比如'/a',就会从系统根目录下的a文件夹开始拼接,并且该项之前的拼接项都将失效。(但是在window下若子项带有''并不会出现这个问题)

process.chdir()

此方法能改变当前的工作目录

process.chdir('..')
复制代码

require()

关于require有一点需要注意的是

require若使用相对路径,即./,那么这个相对路径是相对于当前模块的,而path.resolve是相对于cwd的!

另外,众所周知的,a/b/c,这样的路径会直接在node_modulesa/b/c

__filename:当前文件路径

我们能在模块中使用__filename来获取当前文件的绝对路径。

console.log(__filename);
复制代码

__dirname:当前文件夹路径

我们能在模块中使用__dirname来获取当前文件夹的绝对路径。

console.log(__dirname);
复制代码

path.sep:路径分隔符

path.sep,即 separator ,路径分隔符

console.log(path.sep); // /或\ 根据的是你当前的系统是win还是linux系列
console.log(path.win32.sep); //window \
console.log(path.posix.sep); //linux /
复制代码

拼接路径

path.normalize()

该方法会对路径进行容错处理,主要是:

  • 路径分隔符多不多
  • 有没有..,有的话自动转化
const {normalize} = require('path');
console.log(normalize('/usr///\/local/////bin')); //  /usr/local/bin
console.log(normalize('usr//local/../bin')); //  /usr/bin
复制代码

path.join()

此方法会在真正拼接路径之前调用path.normalize

const {join} = require('path');
console.log(join('usr/','local','bin')); // usr/local/bin
复制代码

此方法中并不能使用./来解析当前模块所处的路径,So我们往往搭配__dirname来进行路径的拼接

path.join(__dirname,'a','b')
复制代码

path.basename()/extname

extname->文件类型

console.log(path.extname('1.a.b.js')); // .js 取最后一个.
复制代码

basename->文件名

此方法还可以手动指定要去除的后缀(默认为最后一个.以及后面的部分)

console.log(path.basename('1.a.b.js','b.js')); // 1.a.
复制代码

path.parse()/format():解析和重组路径

onst {parse,format} = require('path');
const ret = parse(filePath);
console.log(ret);
// { root: '/',
//   dir: '/usr/local/bin',
//   base: 'no.txt',
//   ext: '.txt',
//   name: 'no' }
console.log(format(ret)); // /usr/local/bin/no.txt
//format若存在冲突dir和base的优先级较高
复制代码

path.delimiter:环境变量分隔符

path.delimiter,delimiter,中文意思是定界符的意思,实际上是系统变量的分隔符。

let path = require('path');
console.log(path.delimiter);
console.log(path.posix.delimiter); // :
console.log(path.win32.delimiter); // ;
复制代码

查看当前操作系统上设置的环境变量

console.log('PATH',process.env.PATH); //系统环境变量
复制代码