2016-07-28 2 views
1

Hallo ich habe eine framework gefunden, wo sie viel dieses Muster verwenden.Was ist exports.install in Knoten js?

exports.install = function(){ 
//code 
} 

aber in der Regel Sie dieses Muster

module.exports = { 
//code 
} 

Ist das die gleiche Sache oder ist das etwas anderes in NodeJS sehen?

Antwort

1

exports ist das Objekt, das module.exports entspricht, bevor Sie irgendetwas damit machen. Ich denke, es ist aufgrund einiger Legacy-Code, aber im Grunde verwenden Leute module.exports, wenn sie das gesamte Objekt mit ihrem eigenen Objekt oder eine Funktion ersetzen möchten, während sie exports verwenden, wenn sie nur Funktionen aus dem Modul hängen möchten. Es ist ein wenig verwirrend auf den ersten, aber im Wesentlichen exports.install bedeutet nur, dass Code aufrufen würde so etwas wie:

const mod = require('that-module'); 
mod.install(params, callback); // call that function 

Das Framework Sie freuen wird es wahrscheinlich als Teil eines Bootstrapping-Verfahren, afaik es nicht der Fall ist haben Bedeutung für die Knoten-Engine selbst.

0

Ja, es ist das Gleiche. Sie können einen von 2 Wegen verwenden, um Ihren Code einzurichten.

Die andere Sache ist memory. Sie weisen auf dieselbe Erinnerung hin. Sie können exports wie eine Variable denken und Sie können nicht auf diese Weise nutzen Sie Ihre Modul exportieren:

dieses Modul Gegeben:

// test.js 
exports = { 
    // you can not use this way to export module. 
    // because at this time, `exports` points to another memory region 
    // and it did not lie on same memory with `module.exports` 
    sayHello: function() { 
     console.log("Hello !"); 
    } 
} 

Der folgende Code wird den Fehler: TypeError: test.sayHello is not a function

// app.js 
var test = require("./test"); 
test.sayHello(); 
// You will get TypeError: test.sayHello is not a function 

Die korrekte Art, wie Sie module.exports verwenden müssen, um Ihr Modul zu exportieren:

// test.js 
module.exports = { 
    // you can not use this way to export module. 
    sayHello: function() { 
     console.log("Hello !"); 
    } 
} 

// app.js 
var test = require("./test"); 
test.sayHello(); 
// Console prints: Hello ! 

So ist es nur Stil des Entwicklers.