2012-08-23 16 views
5

Ich verwende node.js mit Jade Templating-System.Globale Variable für Jade Vorlagen in node.js

Angenommen, ich habe diese Routing-Regeln:

// ./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' 
    }); 
}; 

Und diese Dummy-Ansichten:

// ./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 

Wie kann ich erklären author Variable für beide Ansichten im Allgemeinen?

+0

Duplizieren von http://stackoverflow.com/questions/4718818/express-js-view-globals –

Antwort

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

oder

// ./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 

oder

// ./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

Vielen Dank für Ihre Antwort, ich habe geerbte Vorlagen verwendet, wie Sie in der zweiten Variante vorschlagen. Ich frage mich nur, ob es möglich ist, es einfacher zu machen. Habe noch nichts besseres gefunden. :) Erstes Beispiel verkompliziert nur. –

+0

Verwenden Sie 'app.locals.author =" Jeffry "stattdessen, damit Sie Ihren Code nicht überall wiederholen müssen (DRY - https://en.wikipedia.org/wiki/Don't_repeat_yourself) –

+0

@ JanJůna, nicht verwenden globaler Status, damit Sie Ihren Code einfach testen und unterstützen können (https://en.wikipedia.org/wiki/Global_variable#Use) – penartur

Verwandte Themen