2016-02-01 6 views
7

mi chiedo se ci sono pro o contro quando si utilizzano i due approcci contro l'altro:richiedono(): usando module.exports vs assegnando a "questo" direttamente

first.js:

this.myFunction = function() { 
    return 'herro first'; 
} 

second.js:

module.exports = obj = {}; 
obj.myFunction = function() { 
    return 'herro second'; 
} 

I due sopra dovrebbe quindi essere inclusi e utilizzati come così:

app.js:

var first = require('./first.js'); 
console.log(first.myFunction()); 

var second = require('./second'); 
console.log(second.myFunction()); 
+0

Questi sono due modi distinti a * esportazione * una funzione, non per importarla. – Bergi

+1

Sovrascrivere 'module.exports' è un antipattern, specialmente quando non è necessario. Piuttosto do 'var obj = module.exports;' (che è anche * local *) o semplicemente 'module.exports.myFunction = ...' subito. – Bergi

+3

Mentre si usa 'this' in un modulo,' module.exports' è molto più dichiarativo e chiaro per tutti. – Bergi

risposta

2

module.exports (o solo exports) è il modo standard CommonJS.

In Node.js, this sembra essere lo stesso oggetto, ma che è meglio non invocato, e utilizzando this non funziona con altri strumenti, ad esempio Browserify

+1

Una risposta reale che lo spiega, ta! –

Problemi correlati