我正在编写一个 React 应用程序(Express 服务器),它使用共享(“同构”)代码库在客户端 + 服务器上呈现。在某些情况下,当服务器是渲染器时,我想访问请求对象,而不必到处传递它。由于节点一次响应一个请求,利用缓存变量是否安全,确保在发送响应之前重置它?
这行得通,但有人能告诉我为什么这是一个好主意或坏主意吗?...
服务器.js
var r = require('./request-store');
app.use(function(req, res, next) {
r.set(req);
next();
});
var resolve = require('./resolve');
// ...deferring to react router for client / server routing
app.use(function(req, res) {
resolve().then(function(data) {
r.set(null);
res.render('index', { data: data });
});
});
请求-store.js
var r = null;
module.exports.set = function(req) { r = req; };
module.exports.get = function() { return r; };
解决.js
var r = require('./request-store');
module.exports = function() {
return new Promise(resolve, reject) {
if (isServer) {
console.log(r.get());
resolve();
} else if (isClient) {
resolve();
}
}
};