2012-05-18 4 views
8

Ich habe zwei Funktionen in der gleichen Datei, beide extern zugegriffen. Eine der Funktionen wird von Sekunde zu Sekunde aufgerufen.Ist es möglich, auf andere Modul-Exportfunktionen innerhalb derselben Datei zuzugreifen?

module.exports.functionOne = function(param) { 
    console.log('hello'+param); 
}; 

module.exports.functionTwo = function() { 
    var name = 'Foo'; 
    functionOne(name); 
}; 

Wenn dies ausgeführt wird, wird der Aufruf von functionOne als nicht definiert markiert.

Was ist der richtige Weg, es zu verweisen?

Ein Muster, das ich gefunden habe zu arbeiten, ist durch Referenzieren der Datei selbst.

var me = require('./thisfile.js'); 
me.functionOne(name); 

... aber es fühlt sich an, als müsste es einen besseren Weg geben.

Antwort

16

Einfach einfach module.exports.functionOne().

Wenn das zu umständlich ist, nur Folgendes tun:

function fnOne() { 
    console.log("One!"); 
} 

module.exports.fnOne = fnOne; 
0

Ich glaube, ich habe von gedacht erfordern ein Äquivalent enthalten, Import, etc. Wenn es einen anderen Weg, um es ist, es könnte interessant sein, es zu sehen. Ich bin immernoch nass hinter den Ohren mit Knoten.

James HerdmansUnderstanding Node.js "require" Post wirklich hat mir geholfen, wenn es darum ging, mit Code-Organisation zu helfen. Es ist definitiv einen Blick wert!

// ./models/customer.js 
Customer = function(name) { 
    var self = this; 
    self.name = name; 

}; 

// ./controllers/customercontroller.js 
require("../models/customer"); 

CustomerController = function() { 
    var self = this; 

    var _customers = [ 
    new Customer("Sid"), 
    new Customer("Nancy") 
    ]; 
    self.get() { 
    return _customers; 
    } 
}; 
3
var me = require(module.filename); 
me.functionOne(name); 

oder einfach nur die Exporte selbst Objekt verwenden

module.exports.functionOne(name); 
Verwandte Themen