在NodeJS中将对象设置为Request

时间:2014-11-27 08:23:39

标签: node.js

我想在Request中设置一个包含我的Web界面上所有选项的对象...这个对象必须在所有视图中都可以访问...而且它不适用于我的代码...... < / p>

fs.readFile(optionFile, 'utf8', function (err, data) {
  if (err) throw err;
  var options = JSON.parse(data);
  request.options = options;
});
<title><%-request.options.title%></title>

编辑#1

我不想做那样的事情:

response.render('myview', {request: request});

编辑#2

exports.locals = function(app){
  app.use(function(request, response, next){
    fs.readFile('./configs/options.json', 'utf8', function (err, data) {
      if (err) throw err;
      var options = JSON.parse(data);
      response.locals.options = options;
    });
    response.locals.request = request;
    response.locals.path = url.parse(request.url).pathname;
    response.locals._ = _;
    next();
  });
};
<title><%- options.title %></title>

1 个答案:

答案 0 :(得分:2)

如果您想将一些数据传递到所有模板,则应使用app.localsres.locals

app.locals允许您为所有模板定义一组全局局部变量 res.locals允许您在快速中间件中将局部变量绑定到您的请求:

app = express();
app.locals.options = JSON.parse(fs.readFileSync(optionFile, 'utf8'));

然后您就可以在EJS模板中使用它们了:

<title><%- options.title %></title>