2012-08-23 18 views
5

Estoy usando node.js con Jade sistema de plantillas.Variable global para plantillas de Jade en node.js

Supongamos, tengo estas reglas de enrutamiento:

// ./routes/first.js 

exports.first = function(req, res) 
{ 
    res.render('first', { 
     author: 'Edward', 
     title: 'First page' 
    }); 
}; 

// ./routes/second.js 

exports.second = function(req, res) 
{ 
    res.render('second', { 
     author: 'Edward', 
     title: 'Second page' 
    }); 
}; 

Y estos puntos de vista ficticias:

// ./views/first.jade 

html 
    head 
     title #{author} – #{title} 
    body 
     span First page content 

// ./views/second.jade 

html 
    head 
     title #{author} – #{title} 
    body 
     span Second page content 

¿Cómo puedo declarar author variables en general, tanto para los puntos de vista?

+0

duplicados de http://stackoverflow.com/questions/4718818/express-js-view-globals –

Respuesta

2
// ./author.js 
module.exports = 'Edward'; 

// ./routes/first.js 

exports.first = function(req, res) 
{ 
    res.render('first', { 
     author: require('../author'), 
     title: 'First page' 
    }); 
}; 

// ./routes/second.js 

exports.second = function(req, res) 
{ 
    res.render('second', { 
     author: require('../author'), 
     title: 'Second page' 
    }); 
}; 

o

// ./views/includes/head.jade 
head 
    title Edward – #{title} 

// ./views/first.jade 

html 
    include includes/head 
    body 
     span First page content 

// ./views/second.jade 

html 
    include includes/head 
    body 
     span Second page content 

o

// ./views/layout.jade 
html 
    head 
     title Edward – #{title} 
    body 
     block body 

// ./views/first.jade 

extends layout 
append body 
    span First page content 

// ./views/second.jade 

extends layout 
append body 
    span Second page content 
+0

Gracias por su respuesta, He estado usando plantillas heredadas, como propones en la segunda variante. Solo me preguntaba si es posible hacerlo más fácil. No he encontrado nada mejor todavía. :) El primer ejemplo simplemente complica. –

+0

Use 'app.locals.author =" Jeffry "' en su lugar para que no tenga que repetir el código en todas partes (DRY - https://en.wikipedia.org/wiki/Don't_repeat_yourself) –

+0

@ JanJůna, no use estado global para que pueda probar y admitir su código fácilmente (https://en.wikipedia.org/wiki/Global_variable#Use) – penartur

Cuestiones relacionadas