从内部获取用户代理

Fre*_*all 9 node.js express pug

我试图将我为groovy写的脚本移植到jade上,并且遇到了绊脚石

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

 - var agent = req.headers['user-agent'];
 - var agent = headers['user-agent'];
 - var agent = navigator.userAgent;
Run Code Online (Sandbox Code Playgroud)

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

我知道我可以在模块中执行它并将其传递给render语句,但这意味着将它传递给每个渲染,因为它需要是全局的.

节点很新,很困惑.谢谢你.

zem*_*rco 14

只需编写自己的微型中间件

app.use(function(req, res, next) {
  res.locals.ua = req.get('User-Agent');
  next();
});
Run Code Online (Sandbox Code Playgroud)

把它放在你面前 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')));
});
Run Code Online (Sandbox Code Playgroud)

然后你可以ua在任何jade模板中使用变量(例如index.jade)

extends layout

block content
  h1= title
  p Welcome to #{title}
  p=ua
Run Code Online (Sandbox Code Playgroud)