Nodejs中,path.join,和path.resolve

  • 在说path.join()path.resolve()的区别之前,我先说下文件路径/./../之间的区别

    • /代表的是根目录;

    • ./代表的是当前目录;

    • ../代表的是父级目录。

然后再来说下path.join()path.resolve()的区别

我们需要注意的是,这两个方法都属于path模块,在使用之前我们需要先引入模块

const path = require('path');

进入正文:

path.resolve()

  • 方法作用
    • path.resolve方法把传入的路径或者路径段解析为绝对路径。
  • 语法:
path.resolve([from ...], to)
  • 说明:
    • 如果没有传入 path 片段,或者path 片段长度为零(空字符),则path.resolve()会返回当前工作目录的绝对路径(相当于使用path.resolve(__dirname))
  • 借用一下别人的代码,我们来看下一个很经典的例子,假设当前的工作路径为/workspace/demo
console.log(path.resolve())      // returns /workspace/demo
console.log(path.resolve(''))     // returns /workspace/demo
console.log(path.resolve(__dirname)) // returns /workspace/demo
console.log(path.resolve('/img/books', '/net'))  // returns '/net'
console.log(path.resolve('img/books', '/net'))  // returns '/net'
console.log(path.resolve('img/books', './net'))  // returns '/workspace/demo/img/books/net'
console.log(path.resolve('/img/books', './net'))  // returns '/img/books/net'
console.log(path.resolve('/img/books', 'net'))   // returns '/img/books/net'
console.log(path.resolve('/img/books', '../net'))     // returns '/img/net'
console.log(path.resolve('src','/img/books', '../net'))  // returns '/img/net'
console.log(path.resolve('src','./img/books', '../net'))  // returns '/workspace/demo/src/img/net'
console.log(path.resolve('src','img/books', '../net'))   // returns '/workspace/demo/src/img/net'
  • 说明:我们在文章开头所说的./..//的区别就派上用场了,从右到左,我们可以看到,如果路径以/开头,就不会再拼接左边的路径了,因为已经是根目录了,如果是以./开头或者没有符号,就会拼接左边的路径,如果是以 ../开头的,就拼接左边路径的父路径。

path.join()

  • 方法作用:
    • path.join()方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
  • 语法:
path.join([path1], [path2], [...])
  • 说明:
    • 长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 .,表示当前工作目录
  • 借用一下别人的代码,我们来看下一个很经典的例子
path.join('/img', 'book', 'net/abc', 'inter', '..'); // returns /img/book/net/abc
console.log(path.join('/img/books', '../net'))  // returns /img/net
console.log(path.join('img/books', '../net'))   // returns img/net
console.log(path.join('/img/books', './net'))   // returns /img/books/net
console.log(path.join('img/books', './net'))   // returns img/books/net
console.log(path.join('/img/books', 'net'))    // returns /img/books/net
console.log(path.join('img/books', 'net'))    // returns /img/books/net
console.log(path.join('/img/books', '/net'))   // returns /img/books/net
console.log(path.join('img/books', '/net'))    // returns img/books/net