PATH

path.join()

  • path.join():用于链接路径,并且会自动转换当前系统路径的分隔符,路径为无或空时,得到的结果是’.’,只有传入 __dirname 的时候,才能得到绝对路径
path.join()           # .
path.join('')         # .
path.join(__dirname)  # /home/wudandong
path.join('a')        # a
path.join('a','b')    # a/b
path.join('./a')      # a
path.join('/a')       # /a
path.join('a','/b')   # a/b
path.join('../')      # ../
path.join('../a')     # ../a
path.join('../a','b') # ../a/b
path.join('a','../b') # b
path.join('c','b','../a')  # c/a
path.join(__dirname,'a')   # /home/wudandong/a
path.join(__dirname,'../') # /home

path.resolve()

  • path.resolve():也是用于链接路径,但却和 path.join() 方法却很多不同,而且 path.resolve() 方法本身就自带一个 to 的绝对路径参数,也会自动转换分隔符,在某些场景用起来也方便很多
path.resolve()            # /home/wudandong
path.resolve(__dirname)   # /home/wudandong
path.resolve('a')         # /home/wudandong/a
path.resolve('a','b')     # /home/wudandong/a/b
path.resolve('./a')       # /home/wudandong/a
path.resolve('a','./b')   # /home/wudandong/a/b
path.resolve('/a')        # /a
path.resolve('/a','b','c') # /a/b/c
path.resolve('a','/b','c') # /b/c  碰到/就忽略前面的路径
path.resolve('../')       # /home
path.resolve('../a')      # /home/a
path.resolve('a','../b')  # /home/wudandong/b
path.resolve(__dirname,'a')  # /home/wudandong/a
path.resolve('a','b',__dirname)  # /home/wudandong
path.resolve(__dirname,'/a','b') # /a/b  碰到/a访问/a
path.resolve('a','/b',__dirname) # /home/wudandong , __dirname 在后,访问 __dirname

__dirname &__filename & process.cwd()

  • __dirname: 是 node 的一个全局变量,获得当前文件所在目录的完整目录名,搭配 path 一起使用
  • __filename: 获得当前执行文件的带有完整绝对路径的文件名
  • process.cwd(): 是当前Node.js进程执行时的文件夹地址: 工作目录,保证了文件在不同的目录下执行时,路径始终不变

path.dirname() & path.basename()

  • path.dirname() 方法会返回 path 的目录名
  • path.basename() 方法会返回 path的最后一部分
path.dirname('a/b/c')  # a/b
path.basename('a/b/c') # c

path.extname()

  • 返回扩展名