require(__ dirname + path)和require(./ path)之间有什么区别

时间:2015-07-28 09:32:54

标签: javascript node.js

根据这个问题:What is the difference between __dirname and ./ in node.js?这两行应该是相同的:

require(__dirname + '/folder/file.js');
require('./folder/file.js');

我总是习惯使用第二个选项。但是现在我接手了一个项目,以前的开发人员每次都使用require(__dirname + ...)

就我个人而言,我认为阅读起来比较困难,我想改变它,但也许这种语法有一些优点我不知道了?或者它是首选版本,我一直都做错了吗?

万一它很重要,库有时在node.js上运行,启用了es6,有时在io.js上运行(没有额外的标志)。

1 个答案:

答案 0 :(得分:2)

使用require()时没有区别,使用__dirname是多余的。模块加载器将负责为您正确解析路径。

当使用fs之类的fs.readFile方法时,如果您当前的工作目录不等于__dirname,则会有所不同。如果我想在与脚本相同的目录中读取名为file.txt的文件的内容,我会这样做:

var Fs = require('fs');
var Path = require('path');

Fs.readFile(Path.join(__dirname, 'file.txt'), ...);

然后,当我启动执行此代码的节点进程时,我的cwd是什么并不重要。