js css htmljavascript

关于 __dirname介绍以及使用场景

2023-01-05  本文已影响0人  扶得一人醉如苏沐晨

在每个模块中除了 require ,exports 等模块相关 API之外,还有两个特殊的成员:

__dirname:用来动态获取当前文件模块所属目录的绝对路径
__dirname:在哪里使用,就是表示当前文件所在的 目录
__filename:用来动态获取当前文件的绝对路径
__dirname的使用

如果在一个包中使用fs读取文件,而且这个文件(b.js)包含在另外的包(a.js)中

那么读取文件时候的参考的路径不是以当前的包(b.js)作为参考值

是以包含这个包(b.js)的包(a.js)作为参考路径

如果当对应的文件的目录非常深的时候,我们不容易设置

所以我们需要借助 __dirname

__dirname:在哪里使用,就是表示当前文件所在的 目录

例如如果当前文件的全路径是 c:/share/nodeday02/text1/b.js,那么__dirname 表示 c:/share/nodeday02/text1

我们可以使用__dirname表示绝对路径,但是采用的是相对的形式

b.js文件(读取b.txt文件)

var fs = require('fs');

/*如果在一个包中使用fs读取文件,而且这个文件(b.js)包含在另外的包(a.js)中
 * 那么读取文件时候的参考的路径不是以当前的包(b.js)作为参考值
 * 是以包含这个包(b.js)的包(a.js)作为参考路径
 * 如果当对应的文件的目录非常深的时候,我们不容易设置
 * 所以我们需要借助__dirname
 * __dirname:在哪里使用,就是表示当前文件所在的 目录
 * 例如如果当前文件的全路径是 c:/share/nodeday02/text1/b.js
 * 那么__dirname 表示 c:/share/nodeday02/text1
 * 我们可以使用__dirname表示绝对路径,但是采用的是相对的形式*/
fs.readFile(__dirname + '/b.txt',function (err,data) {
    if (err){
        console.log('读取错误');
        return;
    }
    console.log(data);
});

这里也可以利用node.js的path对象的join方法,将传入的多个路径拼接为标准路径并将其格式化,返回规范后的路径,避免手工拼接路径字符串的繁琐

//
const path = require("path");
fs.readFile(path.join(__dirname + '/b.txt'),function (err,data) {
    if (err){
        console.log('读取错误');
        return;
    }
    console.log(data);
});
上一篇下一篇

猜你喜欢

热点阅读