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

何时在Node.js require()中使用../vs./,node.js,visual-studio,Node.js,Visual Studio,var User=require('../models/User') 所以在VisualStudio中,我创建了一个名为models的文件夹,其中有一个名为user.js的文件。从我学到的东西来看,将./models/user而不是两个点放进去是有意义的。虽然,这让我崩溃了,但我想知道是什么原因造成的。谢谢(一点)是当前的目录 。(两个点)是父目录 使用哪一个取决于要加载的内容 例如: 假设您具有以下文件结构: - app - dir1 - file1.js - file2.

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

所以在VisualStudio中,我创建了一个名为models的文件夹,其中有一个名为user.js的文件。从我学到的东西来看,将./models/user而不是两个点放进去是有意义的。虽然,这让我崩溃了,但我想知道是什么原因造成的。谢谢

(一点)是当前的目录

(两个点)是父目录

使用哪一个取决于要加载的内容

例如:

假设您具有以下文件结构:

- app
  - dir1
    - file1.js
    - file2.js
  - dir2
    - file3.js
要使用file1.js中的file2.js,您需要:

require('./file2.js');
require('../dir2/file3.js');
因为这些文件在同一个目录中

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

require('./file2.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
在父目录等中运行
脚本,
将是父目录中
文件.html
的链接,而
将是当前目录中
文件.html
的链接等。这是一个非常普遍的惯例。

(一个点)是当前目录

(两个点)是父目录

使用哪一个取决于要加载的内容

例如:

假设您具有以下文件结构:

- app
  - dir1
    - file1.js
    - file2.js
  - dir2
    - file3.js
要使用file1.js中的file2.js,您需要:

require('./file2.js');
require('../dir2/file3.js');
因为这些文件在同一个目录中

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

require('./file2.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
在父目录等中运行
脚本,
将是指向父目录中
文件.html
的链接,而
将是指向当前目录中
文件.html
的链接。这是一个非常普遍的惯例。

我没有得到否决票,但可以肯定……您在user.js文件中,正在尝试导入相同的文件?没有。。我可以在任何文件中,比如app.js,尝试访问模型中的user.js。。。为什么你会这样想?你已经理解了
.
之间的区别了吗?你只是在问为什么你的
app.js
已经在项目根目录下了,你还需要升级到
。我一直在盲目地使用一个点来访问文件夹中的文件。它大部分时间都有效。我没有获得否决票,但可以肯定的是……你在user.js文件中,试图导入同一个文件?没有。。我可以在任何文件中,比如app.js,尝试访问模型中的user.js。。。为什么你会这样想?你已经理解了
.
之间的区别了吗?你只是在问为什么你的
app.js
已经在项目根目录下了,你还需要升级到
。我一直在盲目地使用一个点来访问文件夹中的文件。大部分时间都很有效。谢谢你的回复。解释得很清楚。你上一次的发言解释了反对票的原因啊哈。谢谢你的回复。解释得很清楚。你的最后一句话解释了反对票的原因啊哈。