基本介绍
__dirname和__filename是node内置的一个常量
- 内置的意思就是不需要额外去定义它
它的作用就是表示当前所在的地址(__dirname和__filename 表示的地址不同)
- __dirname当前文件(你用node运行的文件)所在的文件夹地址
- __filename当前文件的完整地址(精确到你所运行的那个js文件)
1.__dirname ------------------代码及效果展示
console.log(__dirname); //我在当前文件夹内运行这个js文件打印一下
//表示当前文件所在的文件夹地址
运行效果展示:
2.__filename ------------------代码及效果展示
console.log(__filename); //打印一下,看看效果
//表示当前文件所在的完整地址
执行效果展示:
常量(__firname/__filename)和地址连用
这里使用__dirname来举例
const fs = require("fs"); //导入模块
fs.readFile(__dirname+"/index.html",function(err,results){ //读取文件
console.log(__dirname+"/index.html"); //打印当前地址(图中黑色字体)
console.log(results.toString()); //打印读取到的文件 (图中蓝色字体)
})
结果展示:
访问上一级怎么办
__dirname和__filename都是到该文件夹下,但是当我们想访问上一级的时候怎么办呢?
-
这时就用到node的内置模块path了
-
path模块里面有一个resolve()
代码效果:
const path = require("path"); //导入模块
//path.resolve()表示的是什么呢?
console.log(path.resolve()); // 结果: D:\test (node所执行的地址)
console.log(path.resolve(__dirname));// 结果: D:\test\Lession03\path (和__dirname一样,别是当前文件夹)
console.log(path.resolve(__dirname,"server.js")); //结果:D:\test\Lession03\path\server.js (当前执行的文件路径)
console.log(path.resolve(__dirname,"../server.js")); //结果:D:\test\Lession03\server.js (访问上一级目录)
console.log(path.resolve(__dirname,"/server.js")); //结果:D:\server.js (访问根目录)
console.log(path.resolve(__dirname,"../../server.js"));//结果:D:\test\server.js (访问上级目录的上一级目录)
注意事项:
自定义模块访问的地址均是当前文件所在的地址与node执行地址无关。
在写入地址相关的代码时,要写成绝对地址。模块引入除外。