2017-04-17 98 views
0

我对如何在节点项目中导入模块有点困惑。我看到有两种方法可行,但是正确的方法是什么?或者有什么区别? 我指的是我正在导入的模块至少有一个目录。什么是导入模块的正确方法javascript node.js

路#1:

const myModule = require('../myModule'); 

路#2:

const myModule = require('./../myModule'); 

而且,我看到一些进口正在使用的文件扩展名完成的,和其他没有。什么是正确的方法?

const myModule = require('./myModule'); 

const myModule = require('./myModule.js'); 

任何反馈,将不胜感激。

+0

这两个语句都指向相同的位置。 '。/'指向当前目录,并且指向父目录的“../”。第一个是第二个的简短形式 –

+0

您可能想要阅读https://nodejs.org/api/modules.html以更好地了解模块加载程序的工作方式。这主要是项目特定的选择。无论什么作品,作品。 –

回答

2

结果没有区别,两者都有效。第二个只是不必要的冗长(这基本上是无害的,但我不会使用./../myModule.js)。 modules documentation说:

所需模块的前缀为'/'是该文件的绝对路径。例如,require('/home/marco/foo.js')将加载文件/home/marco/foo.js

前缀为'./'的必需模块与调用require()的文件有关。也就是说,circle.js必须与foo.jsrequire('./circle')相同的目录中找到它。

没有前导'/''./',或'../'以指示一个文件,该模块必须是一个核心模块或从node_modules夹加载。

回复您的编辑:

而且,我看到一些进口正在使用的文件扩展名完成的,和其他没有。什么是正确的方法?

这同一文档的地址这只是早期的报价上面:

如果没有找到确切的文件名,然后Node.js的将尝试与添加的扩展加载所需的文件名:.js.json ,最后.node

.js文件被解释为JavaScript文本文件,而.json文件被解析为JSON文本文件。 .node文件被解释为用dlopen加载的编译插件模块。

+0

谢谢。这是一个很好的答案。我很抱歉在提问之前没有阅读文档。 – jac0117

+0

@ jac0117:由于他们在早些时候重组了文档,因此概念信息在某些方面比以前难以找到。 (节点有一般的文档问题,遗憾的是,这是一个不错的工具。) –

+0

@TJCrowder假设我的模块在另一个文件夹中,所以'require('./../ forms/contact)'是这个绝对路径或相对的 –

相关问题