Node路径那些事

  • 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); //系统环境变量
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值