Piszę aplikację internetową w pliku node.js. Teraz każde przetwarzanie na serwerze jest zawsze w kontekście sesji, która jest albo pobierana, albo tworzona na pierwszym etapie, kiedy żądanie trafia na serwer. Po tym wykonaniu wykonanie przepływa przez wiele modułów i wywołań zwrotnych w nich. Z czym walczę, to tworzenie wzorca programistycznego, aby w dowolnym momencie kodu obiekt sesyjny był dostępny bez programisty, który wymagałby przekazania go jako argumentu w każdym wywołaniu funkcji.Wzorzec programowania Node.js do uzyskania konturu wykonania
Jeśli cały kod był w jednym pliku, mógłbym mieć zamknięcie, ale jeśli istnieją wywołania funkcji do innych modułów w innych plikach, to jak mam programować, aby obiekt sesji był dostępny w wywołanej funkcji bez przekazywania go jako argument. Czuję, że powinien istnieć jakiś związek między dwiema funkcjami w dwóch plikach, ale jak to zorganizować, to gdzie utknąłem.
Ogólnie chciałbym powiedzieć, że zawsze istnieje kontekst wykonania, który może być sesją lub żądaniem sieci, którego przetwarzanie jest rozłożone na wiele plików, a obiekt kontekstu wykonania ma zostać udostępniony we wszystkich punktach. W rzeczywistości może istnieć wiele przypadków użycia, takich jak posiadanie jednego obiektu dziennika dla każdego żądania sieciowego lub jednego obiektu dziennika na sesję. Instalacje hydrauliczne wymagane do wykonania tej czynności powinny być montowane na boki bez przeszkadzania programistom aplikacji. Po prostu wie, że ten kontekst wykonania jest dostępny we wszystkich miejscach.
Myślę, że powinien on dość powszechny problem napotykany przez wszystkich, więc proszę dać mi kilka pomysłów.
Poniżej 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
}
Jeśli wymyśliliśmy sposób, aby to zrobić, proszę odpowiedzieć na własne pytanie. –