nodejs path.resolve与path.join如何使用

简介: nodejs path.resolve与path.join如何使用

目录


前言


之前觉得很简单没有记录,果不其然,忘了,还是浅记一下path.resolve与path.join如何使用,毕竟文件中各种乱七八糟的路径位置一直都容易让人混乱。


path.resolve


无参数时


path.resolve()可以得到当前工作路径,也就是编写path.resolve()代码的js文件所在位置。


CommonJS模块可以通过__dirname获得相同值,也是当前工作路径位置。


ES6模块不支持__dirname,因此ES6使用__dirname得先声明。

import path from 'path'
const __dirame = path.resolve()

有参数时


看成从当前路径开始执行cd操作,且跳转目录允许不存在。

假设我文件当前路径开始为C:\Users\user\Desktop。

在C:\Users\user\Desktop上执行cd /跳转绝对路径会回到c盘上,也就是根目录。

console.log(path.resolve('/'))// C:\

1

在C:\Users\user\Desktop上执行cd /会回到c盘C:\上,再执行cd /test又是绝对路径会到C:\test,最后执行cd /path还是绝对路径结果为C:\path,我们发现只要是绝对路径,前面的跳转就没什么意义了,path.resolve('/','/test','/path')等同于path.resolve('/path'),以后我们可以从最后一个绝对路径开始看,前面直接忽略。

console.log(path.resolve('/','/test','/path'))// C:\path

在C:\Users\user\Desktop上执行cd test会到C:\Users\user\Desktop\test,再执行cd path又会到C:\Users\user\Desktop\test\path,注意:即使test、path文件夹不存在,返回的仍然是这个。

console.log(path.resolve('test','path'))// C:\Users\user\Desktop\test\path

path.join


  1. path.join只是返回字符串路径的拼接,只会拼接出看起来规范合理的路径,因此结合两个字符串时,下面三种情况结果都一样。
console.log(path.join('/test','./path'))// \test\path
console.log(path.join('/test','/path'))// \test\path
console.log(path.join('/test','path'))// \test\path
  1. 个人认为path.join没有很合理容易揣摩的规则,多种情况结果一致容易产生误解,因此更建议使用path.resolve。
相关文章
|
1天前
|
JSON 前端开发 API
es6 中await的用法
es6 中await的用法
|
4月前
|
JavaScript 中间件 API
Node中的AsyncLocalStorage 使用问题之Express.js是传递TraceId的问题如何解决
Node中的AsyncLocalStorage 使用问题之Express.js是传递TraceId的问题如何解决
|
4月前
|
JavaScript
Vue如何查看node版本---- package.json 文件中的 engines
Vue如何查看node版本---- package.json 文件中的 engines
|
5月前
|
前端开发 JavaScript
如何使用 await-to-js 库优雅的处理 async await 错误
如何使用 await-to-js 库优雅的处理 async await 错误
83 0
|
6月前
|
前端开发 JavaScript
ES6:Promise使用方法解析大全
ES6:Promise使用方法解析大全
|
6月前
|
JavaScript 前端开发 开发者
7个Js async/await高级用法
7个Js async/await高级用法
127 0
|
前端开发
前端(十二)——深入理解和使用 async和await
前端(十二)——深入理解和使用 async和await
140 1
|
JavaScript 前端开发
asyns和await用法?
asyns和await用法?
|
调度 Python
Python上篇:3. Python是如何从yield/send到yield from再到async/await
Python上篇:3. Python是如何从yield/send到yield from再到async/await
|
小程序 前端开发
小程序里使用es7的async await语法
小程序里使用es7的async await语法
121 0