david2tdw / blog

学习记录
1 stars 1 forks source link

[node] path.join() 和 path.resolve() #175

Open david2tdw opened 4 years ago

david2tdw commented 4 years ago

path.join()方法可以连接任意多个路径字符串。要连接的多个路径可做为参数传入。

var path = require('path'); 
//合法的字符串连接 
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') 
// 连接后 
'/foo/bar/baz/asdf' 

//不合法的字符串将抛出异常 
path.join('foo', {}, 'bar') 
// 抛出的异常 TypeError: Arguments to path.join must be strings'

小tips:path的join和resolve的使用区别

david2tdw commented 4 years ago

路径解析:path.resolve([from ...], to)

path.resolve()方法可以将多个路径解析为一个规范化的绝对路径。其处理方式类似于对这些路径逐一进行cd操作,与cd操作不同的是,这引起路径可以是文件,并且可不必实际存在(resolve()方法不会利用底层的文件系统判断路径是否存在,而只是进行路径字符串操作)。

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

相当于

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd
david2tdw commented 4 years ago

test.js

const path = require('path');
let myPath = path.join(__dirname,'/img/so');
let myPath2 = path.join(__dirname,'./img/so');
let myPath3 = path.resolve(__dirname,'/img/so'); 
let myPath4 = path.resolve(__dirname,'./img/so');
console.log(__dirname);
console.log(myPath);
console.log(myPath2);
console.log(myPath3);
console.log(myPath4);

cmd中执行:

E:\work_items
$ node test.js

结果:

E:\work_items
E:\work_items\img\so
E:\work_items\img\so
E:\img\so
E:\work_items\img\so