主题
path.join与path.resolve对比
一. path模块
path模块是nodejs里面的核心内置模块,用于处理路径的,使用的时候需要require引入。
js
const path = require('path')
path下面的方法有很多,例如:
- path.basename:取到最后一部分path,可传入第二个参数
js
const path = require('path')
let p = '/a/s/d/f/g.html'
console.log(path.basename(p,'.html')); // g
console.log(path.basename(p,'html')); // g.
console.log(path.basename(p,'.HTML')); // g.html
console.log(path.basename(p)); // g.html
- path.dirname:可取到文件所在的目录名称
js
const path = require('path')
let p = '/a/s/d/f/g.html'
console.log(path.dirname(p)); // /a/s/d/f
- path.extname:可得到路径中最后一级的文件的扩展名,包含点,
js
const path = require('path')
let p = '/a/s/d/f/g.html'
console.log(path.extname(p)); // .html
- path.parse:解析路径得到路径全信息
js
const path = require('path')
let p = '/a/s/d/f/g.html'
console.log(path.parse(p)); // { root: '/', dir: '/a/s/d/f', base: 'g.html', ext: '.html', name: 'g' }
- path.join:用于拼接路径
- path.resolve:用于将一系列路径或路径段解析为绝对路径
其中最常用的还是path.resolve
和path.join
,他们都能得到绝对路径,但是也有区别,下面来做一简单的对比
二. path.resolve
path.resolve
的作用:你给我一个相对路径,我还你一个绝对路径。
js
const path = require('path');
console.log(path.resolve('latest.txt')); // e:\2022\learn\latest.txt
要点
- resolve解析路径,默认是以process.cwd()来解析的(当前工作目录),不一定是被执行的js文件所在目录,因此,可能会出问题。
- resolve也有拼接的功能
- 在resolve的路径中,若是遇到
/
或\\
开头的路径,它会认为是跟路径,则前面的路径都将失效,会以带/
或'\'开头的这个路径为起点向后拼接路径(与join最大的区别)
js
const path = require('path');
console.log(path.resolve('latest.txt')); // e:\2022\learn\latest.txt
console.log(path.resolve(__dirname,'latest.txt')); // e:\2022\learn\latest.txt
console.log(path.resolve(__dirname,'abc','latest.txt')); // e:\2022\learn\abc\latest.txt
console.log(path.resolve('./abc','/def','latest.txt')); // e:\def\latest.txt
console.log(path.resolve('./abc','\\def','latest.txt')); // e:\def\latest.txt
console.log(path.resolve('./abc','/','../','latest.txt')); // e:\latest.txt
三. path.join
path.join的作用只是简单路径的拼接,不会自动产生绝对路径,在不同系统内,可以得到系统支持的路径
js
const path = require('path');
console.log(path.join('latest.txt')); // latest.txt
console.log(path.join(__dirname,'latest.txt')); // e:\2022\learn\latest.txt
console.log(path.join(__dirname,'abc','latest.txt')); // e:\2022\learn\abc\latest.txt
console.log(path.join('./abc','\\def','latest.txt')); // abc\def\latest.txt
console.log(path.join('./abc','\\def','../','latest.txt')); // abc\latest.txt