笔记nodejs:path.resolve()和path.join()的区别

笔记nodejs:path.resolve()和path.join()的区别

一、path.join(path1,path2,path3…)

作用:将路径片段使用特定的分隔符(window:\)连接起来形成路径,并规范化生成的路径。若任意一个路径片段类型错误,会报错。join()只是拼接各个path片段,并不像resolve()一样除了拼接各个字段还拼接了工作目录的路径。

const path = require('path');
let myPath = path.join(__dirname,'/img/so');
let myPath2 = path.join(__dirname,'./img/so');
let myPath3=path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');

console.log(__dirname);           
console.log(myPath);    
console.log(myPath2);   
console.log(myPath3);  

E:\test
E:\test\img\so
E:\test\img\so
\foo\bar\baz\asdf

二、path.resolve([from…],to)

作用:把一个路径或路径片段的序列解析为一个绝对路径。给定的路径序列从右到左进行处理,直到构造出一个绝对路径。如果在处理完所有给定的 path 片段之后还未生成绝对路径,则再加上当前工作目录。

/被解析为根目录。

let myPath = path.resolve(__dirname,'/img/so');
直接返回后一个路径
let myPath2 = path.resolve(__dirname,'./img/so');
拼起来
let myPath3=path.resolve('/foo/bar', './baz');拼起来
let myPath4=path.resolve('/foo/bar', '/tmp/file/');
 直接返回后一个路径
console.log(__dirname);     
console.log(myPath);    
console.log(myPath2);   
console.log(myPath3);  
console.log(myPath4); 

E:\test
E:\img\so
E:\test\img\so
E:\foo\bar\baz  根路径后面也连起来
E:\tmp\file

三、例子

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

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

2、join直接拼接字段,resolve解析路径并返回

path.join("a", "b1", "..", "b2");//  "a/b2"
path.resolve("a", "b1", "..", "b2"); // "/home/myself/node/a/b2";

你可能感兴趣的:(nodejs)