Я пишу веб-приложение в 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
}