《Nodejs开发指南》101页中有如下示例:
var util = require('util');
app.helpers({
inspect: function(obj) {
return util.inspect(obj, true);
}
});
app.dynamicHelpers({
headers: function(req, res) {
return req.headers'
}
});
app.get('/helper', function(req, res) {
res.render('helper', {
title: 'Helpers'
});
});
视图helper.ejs如下:
<%=inspect(headers)%>
结果就是访问http://localhost:3000/helper可以得到request信息。 但是helpers和dynamicHelpers在express3.x已经弃用了:Migrating from 2.x to 3.x 于是我用express4.x改写如下: app.js
var util = require('util');
var helper = require('./routes/helper');
app.use('/helper', helper);
// dynamic Helper
app.locals.inspect = function(obj) {
return util.inspect(obj, true);
}
app.locals.headers = function(req, res) {
return req.headers
}
helper.js
var router = express.Router();
router.get('/', function(req, res) {
res.render('helper', {
title: 'Helpers'
});
});
module.exports = router;
helper.ejs
<%inspect(headers())%>
就是参照官方文档用locals代替了helpers,但运行后却得到“Cannot read property 'headers' of undefined”,貌似headers函数的req是undefined。 我想知道书上是怎么用动态视图助手通过headers函数获得get请求的req的呢? 还请各位不吝赐教,谢谢!