get user agent from inside jade

旧巷老猫 提交于 2019-12-09 03:01:33

问题


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.


回答1:


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



回答2:


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};


来源:https://stackoverflow.com/questions/15375457/get-user-agent-from-inside-jade

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!