__dirname 获取当前文件所在的目录的绝对路径

__dirname是node内置的成员变量,可以在node环境中直接使用。常与path.join()一起使用

1 path.join() 拼接路径

之前我们都是用 + 号直接拼接字符串的,但这其实是有问题隐患的,所以还是推荐使用path模块来处理路径问题。image.png

用加号拼接路径的问题

如果你比较细心,其实直接用加号也可以,但是如果在拼接是多打了一个点来表示相对路径,或者少打了一个/表示子目录,那么就会出现目录错误的问题,比如:
__dirname + ‘1.txt’ 这样 1.txt 少了一个 / 就无法表示当前目录下的含义了,就找不到文件了!!
但是使用 path.join就可以忽略这个问题:

  1. const path = require('path')
  2. // 使用加号进行的路径拼接是不严谨的,需要程序员自己细心判断路径表达式
  3. console.log(__dirname + '1.txt');
  4. // 但是使用path.join可以自动解决上一级和下一级的目录关系,不需要自己判断./ ../ /
  5. console.log(path.join(__dirname, '1.txt'));

输出结果:
image.png
可以看到 使用 + 好拼接的路径是错误的,而使用 path.join 则是正确的。

2 path.basename() 获取路径中的文件名

image.png
如果选择传入文件扩展名,则最终结果会略去扩展名的部分,比如 index.html -> index
但是如果传入错误的扩展名,则不会省去。如果传入的扩展名没有加点(比如 .html),则最后的结果会保留点 . 符号

实例

import { basename } from 'path' // 或者const fs = require('fs')

const fpath = 'a/b/c/index.html'

let fileName = basename(fpath)
console.log(fileName);

let nameWithoutExt = basename(fpath,'.html')
console.log(nameWithoutExt);

输出:
index.html
index

3 path.extname() 获取文件扩展名

image.png

实例

import { extname } from 'path';

const fpath = 'a/b/c/index.html'

let fileExt = extname(fpath)
console.log(fileExt);