I am trying to port a script I wrote for groovy over to jade, and have run into a stumbling block
I need to access the user-agent from inside a jade file. Here is what I have tried so far:
- var agent = req.headers['user-agent'];
- var agent = headers['user-agent'];
- var agent = navigator.userAgent;
every time I get a 500 error from express. Is this even possible?
I know I could do it in a module and pass it to the render statement, but that would mean passing it to EVERY render, as it needs to be global.
Very new to node, and confused. Thanks SO.
Just write your own tiny middleware
app.use(function(req, res, next) {
res.locals.ua = req.get('User-Agent');
next();
});
Put this before your 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')));
});
Then you can use the ua
variable in any jade
template (for example index.jade
)
extends layout
block content
h1= title
p Welcome to #{title}
p=ua
You can pass user-agent
from express to jade : (see here)
app.get('/index', function(req, res){
res.render('home.jade', {
locals: {
useragent: req.getHeader('User-Agent')
}
});
res.end();
});
in your jade file
html
body
h1 #{useragent}
script(type='text/javascript')
var useragent = #{useragent};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With