2012-09-30 10 views
6

Używałem dynamicHelpers do ustawienia niektórych zmiennych na każdej stronie w Express 2. Teraz, kiedy ich nie ma i nie jestem pewien jak to zrobić. Jaki jest najlepszy sposób na zrobienie czegoś takiego w Express 3?Jak przekazywać dane do każdego widoku w 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 || {}; 
} 

w veiw.jade

h1= user.username 
+0

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

+0

Tak, widziałem to. Tak naprawdę to nie odpowiada na pytanie: – Pardoner

Odpowiedz

8

middleware przykład

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} 

używać req.flash spróbować:

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') 

aktualizowane moją odpowiedź, nie zostały przeniesione do wersji 3.0 jeszcze w https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x pod Zobacz opcje:

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

Dla wyrażenia 3.x app.locals robi lewę! – Zugwalt

2

co chcesz trochę pośredniej jak następuje przed połączeń trasy:

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

Domyślam się, że twój kod powinien być '' 'app.use (funkcja (req, res, następna) { res.locals.user = {nazwa użytkownika: 'test'}; (); }); '' ' – Yalamber

Powiązane problemy