Если я установлю глобальную переменную во время обработки запроса, могу ли я передать эту информацию в последующие запросы?
То есть глобальная переменная установлена на каждый запрос, и поскольку nodejs однопоточный Я думаю Я в безопасности, но здесь я прошу повысить уверенность.
Вот мой контекст: я создаю интерфейсный сервис ( Typescript + React), который выполняет рендеринг на стороне сервера, и я хочу настроить приложение для каждого запроса.
Для этого я использую эту технику:
conf.ts
:
let CONFIG: any
export function setGlobal (state: any): void {
CONFIG = state
}
export function getGlobal(): any {
return CONFIG
}
server.tsx
- где настроено приложение Express:
const app = express()
app.get("/*", htmlEndpoint)
function htmlEndpoint (req: express.Request, res: express.Response): void {
const foo = req.headers["x-foo"] as string || ""
setGlobal({ foo })
const context = {}
const markup = renderToString(
<StaticRouter location={req.url}>
<App/>
</StaticRouter>,
)
<... respond with HTML, just boring boilerplate code ...>
}
А теперь где-то глубоко в дереве рендеринга React компонент может сделать это:
export function MyComponent() {
console.log(getGlobal().foo)
}
Технически, мой вопрос очень узок по объему: вызывая setGlobal
при каждом запросе, я реальный риск утечки содержимого этого глобала в другие запросы?
Но в более широком смысле я тоже добро пожаловать любой вид обратной связи и мысли о дизайне , Мне не нравятся глобальные переменные, но я не нашел другого решения, но я также признаю, что не являюсь экспертом ни в одной из выбранных мной технологий, поэтому, возможно, вы поможете мне открыть глаза на альтернативы. Очень рад слышать ваши мысли.