2015-11-19 54 views
2

我在學習中的NodeJS進程和跨越這行代碼跌跌撞撞:NodeJS使用require('../');

var irsdk = require('../'); 

裝載什麼我想不通。我可以看到變量的使用和調用函數。

我知道如何在加載特定文件時使用require語句。

如果任何人都可以擺脫一些光它將不勝感激。

謝謝。

+2

正在加載的模塊是一個'index.js'文件,從你目前所在的位置開始。 –

+0

確實很好,這很有道理,但它把我扔了,因爲它沒有指定它。它是否知道按照慣例調用該文件,還是因爲它在package.json文件中被列爲主文件? –

+0

這就是Nodes模塊加載器的工作方式,@zzzzBovs答案顯示了模塊如何查找。 –

回答

4

Node's documentation on Modules

require(X) from module at path Y 
1. If X is a core module, 
    a. return the core module 
    b. STOP 
2. If X begins with './' or '/' or '../' 
    a. LOAD_AS_FILE(Y + X) 
    b. LOAD_AS_DIRECTORY(Y + X) 
3. LOAD_NODE_MODULES(X, dirname(Y)) 
4. THROW "not found" 

LOAD_AS_FILE(X) 
1. If X is a file, load X as JavaScript text. STOP 
2. If X.js is a file, load X.js as JavaScript text. STOP 
3. If X.json is a file, parse X.json to a JavaScript Object. STOP 
4. If X.node is a file, load X.node as binary addon. STOP 

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 

LOAD_NODE_MODULES(X, START) 
1. let DIRS=NODE_MODULES_PATHS(START) 
2. for each DIR in DIRS: 
    a. LOAD_AS_FILE(DIR/X) 
    b. LOAD_AS_DIRECTORY(DIR/X) 

NODE_MODULES_PATHS(START) 
1. let PARTS = path split(START) 
2. let I = count of PARTS - 1 
3. let DIRS = [] 
4. while I >= 0, 
    a. if PARTS[I] = "node_modules" CONTINUE 
    c. DIR = path join(PARTS[0 .. I] + "node_modules") 
    b. DIRS = DIRS + DIR 
    c. let I = I - 1 
5. return DIRS 

require('../')運行父目錄的LOAD_AS_DIRECTORY(X)部分。

-1

它可能是JS的InRule SDK(http://www.inrule.com/products/inrule-for-javascript/)可用於將業務邏輯從應用程序邏輯中分離出來。

或者,它可能是npm'node-irsdk'軟件包,它似乎是某種增強現有「utils」模塊的遙測軟件包。 (https://www.npmjs.com/package/node-irsdk

無論使用哪種方式,都可以通過字面記錄變量來將其註銷到控制檯以獲取有關它的更多信息。

console.log(irsdk); 
//or 
console.dir(irsdk); 
//both must be called AFTER you instantiate the var irsdk = req..... 
0

爲了使這個簡單,只要記住,如果你不指定一個文件,而是一個目錄,這將是index.js文件將被載入。我們要求../女巫會加載上層目錄的索引。