何时在Node.js中使用../ vs ./ require()

时间:2016-11-10 18:09:59

标签: node.js visual-studio

var User = require('../ models / user');

所以在Visual Studio中,我创建了一个名为models的文件夹,里面有一个名为user.js的文件。根据我的学习,使用./models/user而不是两个点是有意义的。虽然,这给我一个崩溃,我想知道可能是什么原因。谢谢

1 个答案:

答案 0 :(得分:5)

.(一个点)是当前目录

..(两个点)是目录

您使用的任何一个取决于您要加载的内容。

示例:

假设你有这些文件结构:

- app
  - dir1
    - file1.js
    - file2.js
  - dir2
    - file3.js

要使用file1.js中的file2.js,您需要:

require('./file2.js');

因为这些文件位于同一目录中。

但是要使用file1.js中的file3.js,你需要:

require('../dir2/file3.js');

因为您需要从一个目录开始,而不是从当前目录开始。

当然要使用file1.js中的file2.js,这也可行:

require('../dir1/file2.js');

甚至是这样:

require('../../app/dir1/file2.js');

甚至是这样一条疯狂的道路:

require('./././../../app/../app/../app/dir1/file2.js');

这不是Node.js特有的。它的工作方式与在shell或HTML或其他方面的工作方式相同。一个点是当前目录,两个点是父目录。

这就是你使用./script在当前目录中运行script的原因(如果.不在你的PATH中),你可以运行../script来运行script父目录中的{1}}等。在HTML <a href=".."></a>中将是父目录的链接,<a href="../file.html"></a>将是父目录中file.html的链接,而{{1}将是当前目录中<a href="./file.html"></a>的链接等。这是一个相当普遍的惯例。