2016-03-22 5 views
2

So für die Bequemlichkeit und Lesbarkeit ist es immer eine gute Idee, Ihre Variablen nach oben dh;Node.js Server mit Express, was ist der beste Weg, um Dateien und Speicher erfordern

Allerdings habe ich mich gefragt, wie js behandelt erfordert Dateien. Wird es bei der Deklaration geladen oder wird es zur Ausführungszeit geladen? ein sinnvoller ist der Unterschied (wenn nur ein „FILE“ je Programm auszuführen ist erforderlich) zwischen Deklaration bis oben

var File1 = require('../api/file1.js'); 
var File2 = require('../api/file2.js'); 
var File3 = require('../api/file3.js'); 
var File4 = require('../api/file3.js'); 
var ManyOtherRequiredFiles = require('..'); 

if(1){ 
    var file = new File1(); 
    file.run() 
}else if(2){ 
    var file = new File2(); 
    file.run() 
}else if(3){ 
    var file = new File3(); 
    file.run() 
}else{ 
    var file = new File4(); 
    file.run() 
} 

oder nicht oben erklärt, aber bei Bedarf erklärt:

var ManyOtherRequiredFiles = require('..'); 

if(1){ 
    var File = require('../api/file1.js'); 
    var file = new File(); 
    file.run() 
}else if(2){ 
    var File = require('../api/file2.js'); 
    var file = new File(); 
    file.run() 
}else if(3){ 
    var File = require('../api/file3.js'); 
    var file = new File(); 
    file.run() 
}else{ 
    var File = require('../api/file4.js'); 
    var file = new File(); 
    file.run() 
} 

Gibt es ein bedeutender Unterschied im Gedächtnis zwischen diesen beiden Optionen? wenn ja, benötigt Dateien, wenn benötigt, der beste Weg, um Dinge zu gehen?

Wenn nicht, Deklariert und erstellt neue Instanzen oben anders oder schlechter?

var File1 = require('../api/file1.js'); 
var file1 = new File1(); 

oder

var file1 = new require('../api/file1.js')(); 

etc .;

+0

Intuition sagt nur erforderlich, wenn erforderlich wird effizienter benötigt. – Scimonster

+0

js könnte ziemlich schlau sein; wenn die Verstärkung klein ist, wäre Lesbarkeit wichtiger – lonewarrior556

+0

Ich glaube nicht, dass Sie hier sowieso viel Lesbarkeit verlieren. – Scimonster

Antwort

3

Module werden geladen, sobald Sie die require Funktion aufrufen.

Jedes geladene Modul wird mit dem erweiterten Pfad der Datei als Cache-Schlüssel zwischengespeichert.

Wenn Sie die gleiche Datei fünfmal laden, wird sie nur einmal geladen, weil der Cache-Schlüssel der gleiche ist - auch wenn Sie andere Pfade angeben, wie zB "../file.js" oder "../. ./foo/file.js "- solange beide Pfade auf dieselbe Datei zeigen, unabhängig davon, wo Sie den Aufruf require getätigt haben, wird das bereits geladene Modul erneut verwendet.

Gibt es einen bedeutenden Unterschied zwischen diesen beiden Optionen?

leicht, aber nur bis Sie die Dateien laden.

Die Speichermenge, die beim Laden eines anderen Moduls in den Speicher verwendet wird, ist vernachlässigbar. Es ist die Verwendung von Code in diesem Modul, die sich schnell addiert.

zum Beispiel könnten Sie eine sehr kleine Datei mit nur 3 oder 4 Zeilen Code haben ... aber dieser Code kann eine Schleife von 1 Milliarde + Male sein, wobei jeder Iteration ein großer Speicherblock verwendet wird.

Ihr Anliegen sollte nicht so viel Speicherverbrauch durch Laden von Modulen sein, aber Speicherverbrauch durch den Code, den Sie geschrieben haben.

Darüber hinaus würde die Idee der Lazy Loading-Module Leistung mehr als Speicher beeinträchtigen.

der Anruf require ist relativ teuer, da es synchron geschehen muss. Synchroner Dateizugriff blockiert alles in Ihrer App, bis die Datei geladen ist.

Daher ist es am besten, alle Module zu Beginn des App-Startzyklus zu laden. Lassen Sie einfach die require Anrufe an der Spitze Ihrer Datei und damit fertig sein.

wenn nein, Deklariert und erstellt neue Instanzen oben anders oder schlechter?

das macht wenig bis gar keinen Unterschied, sind, wenn Sie die Datei nur einmal in einem bestimmten Modul

+0

Hey danke! Weißt du wo ich lerne und lese mehr darüber? – lonewarrior556

+0

ehrlich erinnere mich nicht, wie/wo ich dieses Zeug gelernt habe. Ich habe Teile davon im Internet, in Büchern und im Gespräch mit verschiedenen Leuten gelesen –

Verwandte Themen