美文网首页
path.join & path.relsove 的区别

path.join & path.relsove 的区别

作者: 人话博客 | 来源:发表于2019-02-21 01:07 被阅读0次

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


    path.join

    path.join 理解起来非常简单

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

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

    输出结果:

    /a/b
    
    • 如果让我们自己拼接 ////////a,b//// 为一个正确的路径,
      • 我们必须把/////////a -> /a
      • 我们必须把 b//// -> b/
      • 在拼接 /a 和 'b/' 的之前,还需要在 /a 后面加一个 / -> /a/
      • 最终变成 /a/b

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

    补充:

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


    path.reslove

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

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

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

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

    • 最总路径里一定包含 to 的名字.
    • 最终返回的一定是个绝对路径.

    例子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()

    • path.join 单纯的以正确的路径分割符拼接字符串路径.
    • path.reslove , 类似于在内部调用了终端命令,挨个cd 传入的参数,直到遇到 to 为止.
    • 它俩都不关心最终出来的字符串路径是否真实存在.

    相关文章

      网友评论

          本文标题:path.join & path.relsove 的区别

          本文链接:https://www.haomeiwen.com/subject/ofdlyqtx.html