2017-04-26 54 views
1

我正在使用Javascript,沒有HTML,只有JavaScript和Node,而我需要一些其他js文件,所以它不佔用主文件上的太多空間。我一直在尋找,並且發現了一些像「module.exports」的內容,但是我不太瞭解它,任何人都可以向我解釋這一點嗎?如何在主JS文件中調用另一個JavaScript

我已經試過這

var xgr = require("./xgr.js").randomString; 
 
randomString();

在其他文件

function randomString() { 
 
\t var carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
 
\t var rand = Math.floor(Math.random() * carac.length); 
 
\t var gerado = carac[rand]; 
 
\t return gerado; 
 
} 
 

 
module.exports = randomString;

+5

它應該間共享功能是'xgr()'而不是'randomString()',因爲這是您在導入函數時給函數的名稱。 – Titus

+0

https://www.sitepoint.com/understanding-module-exports-exports-node-js/看看這個。很好的解釋。 – Francisco

+0

返回一個名爲「xgr()不是函數的錯誤」 –

回答

7

Node documentation on modules進入這一場輝詳細的數量。

本質上,exports(也可用作module.exports)是模塊中的預定義對象,您可以爲要導出的屬性添加屬性。 (或者,如果您願意,可以更換整個東西。)

require檢索您輸入的文件require

所以,如果a.js是:

exports.foo = function() { 
    console.log("Hi there"); 
}; 

b.js具有

var a = require("./a"); 

然後

a.foo(); 

...輸出"Hi there"


你的榜樣xgr.js

function randomString() { 
    var carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    var rand = Math.floor(Math.random() * carac.length); 
    var gerado = carac[rand]; 
    return gerado; 
} 

module.exports = randomString; 

您要更換exports完全。你會使用這樣的:

var randomString = require("./xgr.js"); 

console.log(randomString()); 
+1

謝謝你保存了我的人生xD –

0

這是一個很好的方式成分

var _public = exports; 
_public.randomString = function() { 
    let carac = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    let rand = Math.floor(Math.random() * carac.length); 
    let gerado = carac[rand]; 
    return gerado; 
} 

所以,你可以用你的所有共享功能,這樣

let xgr = require("./xgr.js"); 
xgr.randomString(); 
相關問題