path中path.resolve和path.join的区别
2020-08-22 本文已影响0人
WWWWWWWWWWWWWWM
转载自
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