2016-04-29 9 views
0

In meinem Knoten Projekt, das ich für ein einzelnes ModulEine mögliche Struktur für einen Knoten Modul

(function() { 

    var SimpleModule; 
    SimpleModule = (function() { 

    function SimpleModule(params) { 

     /** private function */ 
     this.aPrivateFunction = function() { 
     return "hidden"; 
     }; 

    } 

    /** public function */ 
    SimpleModule.prototype.foo = function() { 
     return "bar"; 
    } 

    return SimpleModule; 

    })(); 

    module.exports = SimpleModule; 

}).call(this); 

so diese grundlegende Templatstruktur bin mit, dass der Anrufer Modul

var SimpleModule 
,simpleModuleInstance; 

SimpleModule = require('./simplemodule'); 
simpleModuleInstance = new SimpleModule(); 
simpleModuleInstance.foo(); 

machen wird, ist dies ein Ansatz formal korrekt in Node?

+1

Was ist 'MyModule'? – Nonemoticoner

+1

Formal - richtig, aber warum so kompliziert? –

+0

@Nonemoticoner Tippfehler behoben. – loretoparisi

Antwort

3

Wie wäre es mit einem einfacheren Ansatz? Module sind standardmäßig privat, daher ist bereits alles eingekapselt, außer was Sie exportieren.

function SimpleModule(params) { 
    /* Not really private!! */ 
    this.aPrivateFunction = function() { 
    return "hidden"; 
    }; 
} 

/** public function */ 
SimpleModule.prototype.foo = function() { 
    return "bar"; 
} 

module.exports = SimpleModule; 
+1

@NestorBritez Nicht wirklich. Wenn Sie 'var instance = new SimpleModule()' schreiben, werden Sie mit 'aPrivateFunction' für die Instanz enden. Um 'aPrivateFunction' als statische Methode zu erhalten, müssen Sie sie direkt an die Konstruktorfunktion anhängen:' SimpleModule.aPrivateFunction = function() ... ' – Bashar