介绍
__dirname
是一个环境变量,它告诉您包含当前正在执行的文件的目录的绝对路径。
在本文中,您将探索如何__dirname
在您的 Node.js 项目中实现。
先决条件
要完成本教程,您需要:
- Node.js 的一般知识。要了解有关 Node.js 的更多信息,请查看我们的如何在 Node.js 中编码系列。
构建您的目录
本教程将使用以下示例目录结构来探索__dirname
工作原理。要开始您的 Node.js 项目,让我们组织您的目录和文件:
node-app
├──index.js
├──public
├──src
│ ├──helpers.js
│ └──api
│ └──controller.js
├──cronjobs
│ ├──pictures
│ └──hello.js
└──package.json
您可以使用__dirname
来检查您的文件所在的目录:
console.log(__dirname) // "/Users/Sam/node-app/src/api"
console.log(process.cwd()) // "/Users/Sam/node-app"
console.log(__dirname) // "/Users/Sam/node-app/cronjobs"
console.log(process.cwd()) // "/Users/Sam/node-app"
请注意,它__dirname
具有不同的值,具体取决于您对其进行控制台处理的文件。该process.cwd()
方法还返回一个值,但以项目目录代替。该__dirname
变量始终返回文件所在位置的绝对路径。
使用目录
在本节中,您将探索如何使用__dirname
来创建新目录、指向它们以及添加新文件。
制作新目录
要在您的index.js
文件中创建一个新目录,请__dirname
作为第一个参数插入path.join()
,并将新目录的名称作为第二个参数插入:
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');
fs.mkdirSync(dirPath);
现在,您已经pictures
在调用mdirSync()
方法后创建了一个新目录,其中包含__dirname
绝对路径。
指向目录
另一个独特的功能是它能够指向目录。在您的index.js
文件中,声明一个变量并将 的值__dirname
作为第一个参数传入path.join()
,并将包含静态文件的目录作为第二个参数:
express.static(path.join(__dirname, '/public'));
在这里,您告诉 Node.js 用于__dirname
指向public
包含静态文件的目录。
将文件添加到目录
您还可以将文件添加到现有目录。在您的index.js
文件中,声明一个变量并包含__dirname
作为第一个参数和要添加的文件作为第二个参数:
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');
fs.openSync(filePath, 'hello.jpeg');
openSync()
如果文件不存在于您的目录中,则使用该方法将添加该文件。
结论
Node.js 为您提供了一种创建和指向目录的方法,以及使用模块化环境变量将文件添加到现有目录的方法。
如需进一步阅读,请查看 的Node.js 文档__dirname
以及有关__dirname
在 Express.js 框架中使用的教程。