6

Express 2 のすべてのページでいくつかの変数を設定するために dynamicHelpers を使用していました。Express 3 でこのようなことを行う最善の方法は何ですか?

app.js

app.dynamicHelpers( require('dynamicHelpers') )

dynamicHelpers.js

exports.user = function(req, res) {
    return req.user || {};
}

exports.message = function(req, res) {
    return req.flash.message || {};
}

veiw.jadeで

h1= user.username
4

2 に答える 2

10

ミドルウェアの例

var app = require('express')()
  , jade = require('jade')

app.set('views', __dirname + '/views')
app.set('view engine', 'jade')  

app.use(function(req,res,next){
  res.locals.user = { name : "test" }
  next()
})

app.get('*',function(req,res){
   res.render('index.jade')
})

app.listen('8001')

index.jade

!!! 5
html
  body
    div hello #{user.name}

req.flash を使用するには、次を試してください。

var app = require('express')()
  , jade = require('jade')

app.set('views', __dirname + '/views')
app.set('view engine', 'jade')

app.use(require('connect-flash')())

// Expose the flash function to the view layer
app.use(function(req, res, next) {
   res.locals.flash = req.flash.bind(req)
   next()
})


app.get('*',function(req,res){
   res.render('index.jade')
})

app.listen('8001')

回答を更新しました。まだ 3.0 に移行していませ

The "view options" setting is no longer necessary, app.locals are the local variables 
merged with res.render()'s, so app.locals.pretty = true is the same as passing 
res.render(view, { pretty: true }).
于 2012-09-30T03:42:10.157 に答える
2

ルート呼び出しの前に、次のようなミドルウェアが必要になります。

app.use(function(req,res,next){
  res.locals.user = {username: 'test'};
  next();
});
于 2012-09-30T02:39:59.057 に答える