我正在尝试将我为groovy写的脚本移植到jade,并遇到了绊脚石
我需要从jade文件中访问用户代理。这是我到目前为止所尝试的:
- var agent = req.headers['user-agent'];
- var agent = headers['user-agent'];
- var agent = navigator.userAgent;
每次我从快递中得到500错误。这甚至可能吗?
我知道我可以在模块中执行它并将其传递给render语句,但这意味着将它传递给每个渲染,因为它需要是全局的。
节点很新,很困惑。谢谢你。
答案 0 :(得分:13)
只需编写自己的微型中间件
app.use(function(req, res, next) {
res.locals.ua = req.get('User-Agent');
next();
});
将它放在app.router
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
// here
app.use(function(req, res, next) {
res.locals.ua = req.get('User-Agent');
next();
});
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
然后,您可以在任何ua
模板中使用jade
变量(例如index.jade
)
extends layout
block content
h1= title
p Welcome to #{title}
p=ua
答案 1 :(得分:4)
您可以将user-agent
从快递传递给jade :(请参阅here)
app.get('/index', function(req, res){
res.render('home.jade', {
locals: {
useragent: req.getHeader('User-Agent')
}
});
res.end();
});
在你的玉器文件中
html
body
h1 #{useragent}
script(type='text/javascript')
var useragent = #{useragent};