2011-11-18 23 views
5

Bazı genel uygulama verilerini tüm rotalarım için kullanıma sunmanın bir 'hızlı' özel yolu var mı? Veya sadece bir module.exports ifadesi kullanarak mı?Express - Verileri tüm rotalara aktarma

Herhangi bir işaretçi daha fazla hoş geldiniz. Düğüm noob - btw

cevap

11

Sen düzeninde de mevcuttur küresel nesne ayarlayabilirsiniz

app.configure(function(){ 
    app.set('view options', {pageTitle: ''}) 
} 

app.get('/',function(request, response){ 
    response.app.settings['view options'].pageTitle = 'Hello World' 
    response.render('home') 
}) 

layout.jade

!!! 
html 
    head 
    title= pageTitle 
    body!= body 
7

Her isteğin kullanılabilir olmasını sağlamak için uygulamanızın ayar kısmında app.set() kullanabilirsiniz. Uygulama nesnesini, rotalarınızda req.app aracılığıyla bulabilirsiniz.

Kişisel olarak, app.set('name', obj); kurulumunu ve req.app.settings.name aracılığıyla eriştiğim yollarda yapmayı seviyorum.

+1

Yani demek istediniz res.app değil req.app değil mi? – FireZenk

2

Ayrıca kullanabilirsiniz app.js tüm görünümlere veri aktarmak için dinamik yardımcı.

:

görünümlerinizde Şimdi

// Dynamic Helpers 
app.dynamicHelpers({ 
    appSettings: function(req, res){ 
     return {name:"My App", version:"0.1"}; 
    } 
}); 

(Ben bu örnekte üzerinde Ejs kullanılan ama yeşim veya başka bir görünüm motoru ile çalışmalıdır) bu gibi kullanabilirsiniz app.js view.ejs

<%= appSettings.name %> 
<%= appSettings.version %> 

bu yardımcı olur Umut.

+3

Cevabınızın olumsuz tarafı, her istek için yardımcıyı işleyecektir. Sürüm gibi statik veriler için 'app.set ('view options', someData)' daha uygundur. DynamicHelpers dinamik veriler içindir. – jackdbernier

+0

İyi nokta! Yorumunuz için çok teşekkürler! – FMontano

İlgili konular