9

groovy用に書いたスクリプトをjadeに移植しようとしていますが、つまずきに遭遇しました

翡翠ファイルの中からユーザーエージェントにアクセスする必要があります。これが私がこれまでに試したことです:

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

Expressから500エラーが発生するたびに。これも可能ですか?

モジュールでそれを実行してrenderステートメントに渡すことができることは知っていますが、グローバルである必要があるため、すべてのレンダリングに渡すことを意味します。

ノードは非常に新しく、混乱しています。ありがとうSO。

4

2 に答える 2

15

独自の小さなミドルウェアを作成するだけです

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
于 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 に答える