Я пишу веб-приложение в node.js.Теперь каждая обработка на сервере всегда происходит в контексте сеанса, который либо извлекается, либо создается на самом первом этапе, когда запрос попадает на сервер.После этого выполнение проходит через несколько модулей и обратных вызовов внутри них.Я борюсь с тем, чтобы создать шаблон программирования так, чтобы в любой точке кода объект сеанса был доступен без того, чтобы программист требовал, чтобы он передавал его в качестве аргумента при каждом вызове функции.
Если всекод был в одном файле, у меня могло бы быть закрытие, но если в других файлах есть вызовы функций для других модулей, как мне запрограммировать так, чтобы объект сеанса был доступен в вызываемой функции без передачи его в качестве аргумента.Я чувствую, что должна быть какая-то связь между двумя функциями в двух файлах, но как это устроить, вот где я застреваю.
В общем, я хотел бы сказать, что всегда есть контекст выполнения, который может бытьсеансовый или сетевой запрос, обработка которого распределяется по нескольким файлам и объект контекста исполнения должен быть доступен во всех точках.На самом деле может быть несколько вариантов использования, например, наличие одного объекта журнала для каждого сетевого запроса или одного объекта журнала на сеанс.А сантехника, необходимая для выполнения этой работы, должна быть установлена сбоку, чтобы прикладной программист не беспокоился об этом.Он просто знает, что контекст выполнения доступен во всех местах.
Я думаю, что это должна быть довольно распространенная проблема, с которой сталкиваются все, поэтому, пожалуйста, дайте мне несколько идей.
Ниже приводится проблема
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
}