Ich schreibe eine Webanwendung in node.js. Nun ist jede Verarbeitung auf dem Server immer im Kontext einer Sitzung, die entweder abgerufen oder in der allerersten Stufe erstellt wird, wenn die Anforderung den Server erreicht. Danach durchläuft die Ausführung mehrere Module und Callbacks in ihnen. Worum ich mich bemühe, ist das Erstellen eines Programmiermusters, so dass an jedem Punkt im Code das Session-Objekt verfügbar ist, ohne dass der Programmierer es als Argument in jedem Funktionsaufruf übergeben muss.Node.js Programmierungsmuster zum Abrufen des Ausführungskontexts
Wenn der gesamte Code in einer einzigen Datei war, hätte ich eine Schließung haben können, aber wenn Funktionsaufrufe zu anderen Modulen in anderen Dateien sind, wie programmiere ich, so dass das Sitzungsobjekt in der aufgerufenen Funktion verfügbar ist als ein Argument. Ich denke, es sollte eine Verbindung zwischen den zwei Funktionen in den zwei Dateien geben, aber wie man das arrangiert, ist, wo ich stecken bleibe.
Im Allgemeinen möchte ich sagen, dass es immer einen Ausführungskontext gibt, der eine Sitzung oder eine Netzwerkanforderung sein kann, deren Verarbeitung über mehrere Dateien verteilt ist und das Ausführungskontextobjekt an allen Stellen verfügbar gemacht werden soll. Es kann mehrere Anwendungsfälle geben, beispielsweise ein Log-Objekt für jede Netzwerkanforderung oder ein Log-Objekt pro Sitzung. Und die für diese Arbeit erforderlichen Rohrleitungen sollten seitlich angebracht werden, ohne dass sich der Anwendungsprogrammierer darum kümmern muss. Er weiß nur, dass dieser Ausführungskontext überall verfügbar ist.
Ich denke, es sollte ziemlich allgemeines Problem von allen konfrontiert werden, also bitte geben Sie mir einige Ideen.
Es folgt das Problem
MainServer.js
app = require('express').createServer();
app_module1 = require('AppModule1');
var session = get_session();
app.get('/my/page', app_module1.func1);
AppModule1.js
app_module2 = require('AppModule2');
exports.func1 = function(req,res){
// I want to know which the session context this code is running for
app_module2.func2(req,res);
}
AppModule2.js
exports.func2 = function(req,res){
// I want to know where the session context in which this code is running
}
Wenn Sie eine Möglichkeit, dies zu tun herausgefunden, geben Sie bitte Ihre eigene Frage zu beantworten. –