9

我正在尝试将我为 groovy 编写的脚本移植到玉上,但遇到了绊脚石

我需要从一个玉文件中访问用户代理。这是我到目前为止所尝试的:

 - var agent = req.headers['user-agent'];
 - var agent = headers['user-agent'];
 - var agent = navigator.userAgent;

每次我从快递收到 500 错误。这甚至可能吗?

我知道我可以在一个模块中完成它并将它传递给渲染语句,但这意味着将它传递给每个渲染,因为它需要是全局的。

对节点很陌生,很困惑。谢谢。

4

2 回答 2

15

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
于 2013-03-13T08:28:07.753 回答
4

你可以user-agent从快递到玉:(见这里

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};
于 2013-03-13T05:08:16.050 回答