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

Rya*_*yan 0 visual-studio node.js

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

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

rsp*_*rsp 5

.(一个点)是当前目录

..(两个点)是目录

无论你使用哪一个取决于你想要加载什么.

例:

假设您有这些文件结构:

- app
  - dir1
    - file1.js
    - file2.js
  - dir2
    - file3.js
Run Code Online (Sandbox Code Playgroud)

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

require('./file2.js');
Run Code Online (Sandbox Code Playgroud)

因为这些文件在同一目录中.

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

require('../dir2/file3.js');
Run Code Online (Sandbox Code Playgroud)

因为你需要从一个目录开始而不是从当前目录开始.

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

require('../dir1/file2.js');
Run Code Online (Sandbox Code Playgroud)

甚至这个:

require('../../app/dir1/file2.js');
Run Code Online (Sandbox Code Playgroud)

甚至像这样的疯狂之路:

require('./././../../app/../app/../app/dir1/file2.js');
Run Code Online (Sandbox Code Playgroud)

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

这就是为什么你使用./script运行script在当前目录(如果.不是在你的PATH),你会运行../script到运行script在父目录等.在HTML <a href=".."></a>将父目录的链接,<a href="../file.html"></a>将链接到file.html在父目录,虽然<a href="./file.html"></a>file.html当前目录中的链接等.这是一个非常普遍的约定.