2015-10-07 19 views
0

很抱歉,如果這是一個非常明顯的事情,但這是我在javascript處理node.js中的導出模塊的第一項任務。我是否需要在以下JavaScript代碼中導出輔助函數?

我有兩個文件:1)ADT.js和2)main.js。 我想一些的ADT.js功能導出到main.js

這裏是代碼ADT.js

module.exports = {}; 
var exports = module.exports; 

var wordCount = function(text) { 

    var data = readFile(text); 

    if(checkEmptyFile(data)){ 
     return null; 
    } else { 
     // do something 
    } 
}; 

//==================== Helper Functions ================================== 
function readFile (file){ 

    var fs = require('fs'); 
    var data = fs.readFileSync(file, "utf8"); 

    return data; 
} 

function checkEmptyFile(data){ 

    if(data.replace(/\s+/, '') === ''){ 

     return true; 
    } 
} 

/** adding the functions to the exports module */ 
exports.wordCount = wordCount; 

守則main.js

/** Importing the data_structures.js module */ 
var adt = require("./ADT"); 

var main = function(...){ 

    if (firstWord === ""){ 
     console.log(...); 
    } else { 
     makePoem(...); 

     if(printResult === true){ 
      console.log("Word Count: "+ 
        JSON.stringify(adt.wordCount(fileName))); 
      console.log(""); 
     }    
    }   
}; 

var makePoem = function(...){ 

    ...;   
}; 

我需要導出的輔助功能太?我不打算明確地使用main.js中任何地方的幫助函數。

+1

此代碼是否運行?如果是這樣,你應該沒問題,不需要出口。 –

+0

你爲什麼要問?您只需要導出其他模塊應該能夠使用/調用的其他模塊。 –

+1

您只需要導出將直接調用的函數。如果你不打算直接調用它,那麼就不需要導出它。節點將維護上下文並訪問這些功能,而不需要導出它們。 – frosty

回答

5

從模塊中導出函數的目的,純粹是爲了讓其他模塊可以使用。如果這個函數只在當前模塊中使用,並且你的意圖是保持這種方式,那麼沒有理由導出它。

您可以考慮在模塊中定義的功能,但不能導出爲模塊專用的「本地」功能。您可以在定義模塊的任何地方使用它們,但不能從其他模塊調用它們。出口它們的行爲(將它們分配爲module.exports的財產)使它們可以從外部世界中被召喚。

+0

謝謝你的解釋。 –

相關問題