2015-07-28 89 views
1

根据这样一个问题:What is the difference between __dirname and ./ in node.js?这些2行应该是相同的:是什么需要之间的差(__目录名+路径),并且需要(./路径)

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

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

就我个人而言,我认为这很难阅读,我想改变它,但也许这是我失踪的语法的一些优势?或者它是首选版本,我一直在做错?

为防万一它很重要,库有时运行在node.js启用es6,有时在io.js(没有附加标志)。

回答

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是什么,当我启动节点过程,执行该码。