path.join & path.relsove 的区别

2019-02-21  本文已影响0人  人话博客

看了很多博客,发现都是直接照抄 NODE 官方文档.
连例子都一模一样.
感觉看不太懂.于是就自己体就琢磨了一下.


path.join

path.join 理解起来非常简单

它的作用仅仅是使用正确的系统路径分隔连接路径字符串

const path = require('path')
path.join('////////a','b////')

输出结果:

/a/b

如果操作系统不同,不如 mac 里用 / , 而windows\ ,我们还需要根据操作系统类型,修改用户输入错误的路径分隔符.

补充:

path.join 仅仅是把传入的参数以当前操作系统正确的路径方式拼接,仅此而已.


path.reslove

我这里也要引用一下官方解释了..

path.reslove([from...],to)

官方解释为:把一些列路径解析成 to 的绝对路径.

光看这种解释,还是比较懵逼.
但至少可以得到2条信息

例子1:

假如现在有一个 reslove.js,此js文件在 /Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/文件夹中.

console.log(path.resolve('a','b','c','d'))

执行上述那段代码,就相当于当前搜出的js文件路径(/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/)的终端环境下依次输入

/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode> cd a
/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode//a> cd b
/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/a/b> cd c
/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/a/b/c> cd d
/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/a/b/c/d> pwd 
/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/a/b/c/d

由于 dpath.reslove() 函数的最后一个参数.

path.reslove又最终返回的是一个绝对路径.

所以,这里的返回值是

/Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/a/b/c/d

例子2

假如现在有一个 reslove.js,此js文件在 /Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/文件夹中.

console.log(path.resolve('a','b','/c','f'))

里面有一个特殊的直接表示系统根路径的 /c

根据上述的规律,应该输出 /c/f

最后输出的结果也是对应上的.


例子3

假如现在有一个 reslove.js,此js文件在 /Users/relax/Desktop/代码/前端学习/想法测试/aboutNode/文件夹中.

console.log(path.resolve('a','b','c','/f'))

直接输出 /f

因为在终端里直接输入 cd /f 就是进入到根目录的 f 文件夹里.

path.reslove([from..],to) 运行原理说明

根据传入参数,类似在此函数执行的路径下开启了一个终端,并以此 cd 参数.只到解析到 to的路径为止.


path.join() & path.resolve()

上一篇下一篇

猜你喜欢

热点阅读