path中path.resolve和path.join的区别

转载自

https://juejin.im/post/6844903861920989198

path.join

__dirname
// __dirname返回当前文件所在的绝对路径
const path = require('path');

const path1 = path.join(__dirname, '/foo');
const path2 = path.join(__dirname, './foo/bar');
const path3 = path.join('/foo', 'bar', '/baz/apple', 'aaa', '..');
const path4 = path.join('foo', 'bar', 'baz');


console.log(path1);
console.log(path2);
console.log(path3);
console.log(path4);

// 输出结果
/Users/xiao/work/test/foo
/Users/xiao/work/test/foo/bar
/foo/bar/baz/apple
foo/bar/baz

  • path.join相当于字符串的拼接
  • path.resolve相当于把resolve里面的每一个参数执行了cd方法,第一个参数为当前文件的绝对路径执行cd方法,第一个参数不管有没有/都是绝对路径,后面的参数看有没有/
path.resolve('www', 'static', '../public', 'src', '..');
// cd www  /Users/xiao/work/test/www
// cd static /Users/xiao/work/test/www/static
// cd ../public /Users/xiao/work/test/www/public
// cd src /Users/xiao/work/test/www/public/src
// cd .. /Users/xiao/work/test/www/public

区别
1、join是把各个path片段连接在一起, resolve把‘/’当成根目录

path.join('/a', '/b'); 
// /a/b
path.resolve('/a', '/b');
// /b

2、resolve在传入非/路径时,会自动加上当前目录形成一个绝对路径,而join仅仅用于路径拼接

// 当前路径为
/Users/xiao/work/test
path.join('a', 'b', '..', 'd');
// a/d
path.resolve('a', 'b', '..', 'd');
// /Users/xiao/work/test/a/d


你可能感兴趣的:(path中path.resolve和path.join的区别)