__dirname 获取当前文件所在的目录的绝对路径
__dirname是node内置的成员变量,可以在node环境中直接使用。常与path.join()一起使用
1 path.join() 拼接路径
之前我们都是用 + 号直接拼接字符串的,但这其实是有问题隐患的,所以还是推荐使用path模块来处理路径问题。
用加号拼接路径的问题
如果你比较细心,其实直接用加号也可以,但是如果在拼接是多打了一个点来表示相对路径,或者少打了一个/表示子目录,那么就会出现目录错误的问题,比如:
__dirname + ‘1.txt’ 这样 1.txt 少了一个 / 就无法表示当前目录下的含义了,就找不到文件了!!
但是使用 path.join就可以忽略这个问题:
const path = require('path')// 使用加号进行的路径拼接是不严谨的,需要程序员自己细心判断路径表达式console.log(__dirname + '1.txt');// 但是使用path.join可以自动解决上一级和下一级的目录关系,不需要自己判断./ ../ /console.log(path.join(__dirname, '1.txt'));
输出结果:
可以看到 使用 + 好拼接的路径是错误的,而使用 path.join 则是正确的。
2 path.basename() 获取路径中的文件名

如果选择传入文件扩展名,则最终结果会略去扩展名的部分,比如 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);
3 path.extname() 获取文件扩展名
实例
import { extname } from 'path';
const fpath = 'a/b/c/index.html'
let fileExt = extname(fpath)
console.log(fileExt);
