2012-09-30 6 views
6

Express 2의 모든 페이지에서 일부 변수를 설정하기 위해 dynamicHelpers를 사용하고있었습니다. 이제 사라 졌으니 까 어떻게해야할지 모르겠군요. Express 3에서 이와 같은 작업을 수행하는 가장 좋은 방법은 무엇입니까? 당신은 당신의 통화를 라우팅하기 전에 다음과 같은 몇 가지 미들웨어를 원할 것Express 3의 모든보기에 데이터를 전달하는 방법은 무엇입니까?

h1= user.username 
+0

https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x – supernova

+0

예. 나는 그것을 보았습니다. – Pardoner

답변

8

미들웨어 예를

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으로 마이그레이션하지 않은, https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x에서 보기 옵션 :

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 }). 
+0

express 3.x의 경우 app.locals가 트릭을 수행합니다! – Zugwalt

2

는 app.js

app.dynamicHelpers(require('dynamicHelpers')) 

dynamicHelpers.js veiw.jade에서

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

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

:

app.use(function(req,res,next){ 
    res.locals.user = {username: 'test'}; 
    next(); 
}); 
+1

당신의 코드가 이어야한다고 생각합니다. ("req, res, next) { res.locals.user = {username : '테스트'}}; next(); });''' – Yalamber

관련 문제