2016-11-14 40 views
1

這兩個語句是否相同?節點需要目錄而不是特定文件

const deviceModule = require('..').device; 

const deviceModule = require('../device'); 

我以爲需要一個模塊(我們沒有路徑)作爲參數。它是如何提供一個目錄以及.device是做什麼的?

感謝任何能夠幫助我更好地理解node.js和javascript的人。

+0

我編輯了你的問題 - 請不要把代碼放在標題中! –

回答

4

require('..').device要求index.js從父目錄,然後從該文件獲得device

所以,如果你有以下結構:

- index.js 
- /foo 
- - bar.js 

隨着index.js具有如下:

module.exports = { 
    device: "baz" 
}; 

然後require("..").devicebar.js會給你"baz"


Here is the specification for loading a directory:

LOAD_AS_DIRECTORY(X) 
1. If X/package.json is a file, 
    a. Parse X/package.json, and look for "main" field. 
    b. let M = X + (json main field) 
    c. LOAD_AS_FILE(M) 
2. If X/index.js is a file, load X/index.js as JavaScript text. STOP 
3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP 
4. If X/index.node is a file, load X/index.node as binary addon. STOP 
在你的榜樣

所以,它會:

  1. package.json並獲得main屬性,然後加載如果它存在
  2. 如果步驟1不存在,如果它存在,它將加載index.js
  3. 如果步驟2不存在,它會如果存在
  4. 加載index.json如果第4步不存在,它會如果存在
+1

非常感謝! – ctrax

+0

@ctrax請不要忘記通過點擊向上/向下箭頭下的勾號來接受我的答案。這讓其他人知道我的答案是解決方案,同時也給了我一些代表作爲幫助的獎勵。你也得到一些代表接受!大家都贏了:) –

0

您可以使用模塊需要文件目錄加載index.node

1-有助於要求只有名稱的所有文件。不需要給文件的絕對路徑。
2-多個文件一次。