我想在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>
答案 0 :(得分:2)
如果您想将一些数据传递到所有模板,则应使用app.locals
或res.locals
。
app.locals
允许您为所有模板定义一组全局局部变量
res.locals
允许您在快速中间件中将局部变量绑定到您的请求:
app = express();
app.locals.options = JSON.parse(fs.readFileSync(optionFile, 'utf8'));
然后您就可以在EJS模板中使用它们了:
<title><%- options.title %></title>