2017-04-17 64 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)'是這個絕對路徑或相對的 –

相關問題