📜  Node.js 中 __dirname 和 . 的区别(1)

📅  最后修改于: 2023-12-03 15:33:10.490000             🧑  作者: Mango

Node.js 中 __dirname 和 . 的区别

在 Node.js 中,__dirname 和 . (点)是经常被使用的两个特殊变量。它们在处理文件路径时非常重要。本文将深入探讨它们的用法和区别。

__dirname

__dirname 是 Node.js 中一个全局变量,它代表当前执行文件所在的目录的绝对路径。在使用 __dirname 时,不需要传入任何参数。

例如,假设我们有一个文件位置为 /home/user/project/app.js,那么在这个文件中,__dirname 的值将会是 /home/user/project。

__dirname 的常见用途是用于定位当前脚本所在的文件夹,在加载文件、图片等资源时非常有用。

下面是一个使用 __dirname 的例子:

const path = require('path');
const myFile = path.join(__dirname, 'myfile.txt');

在这个例子中,我们使用 path.join 将 __dirname 和 'myfile.txt' 连接起来,生成一个文件路径。这样可以确保我们的代码能够在任何系统上正确访问 myfile.txt。

.

. (点)代表当前执行脚本所在的目录。如果你运行 node myscript.js,并且 myscript.js 中包含有 .,那么它将会指向运行 myscript.js 时所在的目录。

例如,假设我们有一个文件位置为 /home/user/project/myscript.js,那么在这个文件中,. 的值是 /home/user/project。

当我们需要访问相对路径资源时,通常会使用 .,例如:

const myFile = './myfile.txt';

在这个例子中,我们使用相对路径 . 和文件名 myfile.txt,定位文件的位置。这样的好处是,如果我们需要移动 myscript.js,myfile.txt 也会相应的移动,并且代码仍然可用。

需要注意的是,. 只有在你运行 node myscript.js 时,才会被解析为当前目录。如果你在包含 . 的脚本中使用 require('./myModule') 加载某个模块,它会在当前目录下寻找 myModule,而不是在包含这个脚本的文件夹中寻找 myModule。这时,我们通常需要使用 __dirname。

综上,__dirname 和 . 都是用于定位文件位置的重要变量。__dirname 表示当前脚本所在目录的绝对路径,而 . 表示当前执行脚本时所在的目录。要正确使用它们,我们需要了解它们的特性和区别。

参考文献: