2012-02-27 3 views
26

W moim Node/projektu Express.js mogę ustawić widoki folderu globalnie tak:Node/Express.js - Zastępowanie gdzie szukać folderu do „wyświetleń” dla każdego żądania

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    .... snip .... 
}); 

... a wszystkie moje szablony widoku przechodzą do folderu widoków.

Czy można przesłonić miejsce, w którym Express szuka wyświetleń na żądanie na żądanie? Na przykład coś takiego, co następuje:

app.get('/', function(req, res) { 
    res.render('index', { viewFolder: 'otherViews' }); 
}); 

Pytam jest Próbuję replikować funkcjonalność Microsoft ASP.NET MVC w obszarach, w których każdy obszar dostaje swój własny katalog widoki.

+0

Hi czy kiedykolwiek znaleźć lepszego rozwiązania przyjętego odpowiedź? gdzie obszary nie muszą być podkatalogiem folderu widoków? –

Odpowiedz

22

Ustawienie „wyświetleń” jest katalogiem głównym, więc powinieneś być w stanie określić podfolder w hierarchii:

app.get('/', function(req, res) { 
    res.render('areaName/viewName'); 
}); 

to znaczy, że potrzebę „obszary” być podfoldery, ale pozwala osiągnąć pożądany podział.

6

Jako bardziej modularne rozwiązanie, zrobiłem coś takiego w sails.js. Po prostu przetasuj funkcję renderowania dla danego żądania w oprogramowaniu pośredniczącym. :)

var curRender = res.render; 
res.render = function(path, locals, func) { 
    var args = [res.locals.explicitPath + '/' + path, locals, func]; 
    curRender.apply(this, args); 
}; 
0

Pełna ścieżka działa zbyt

app.get('/', function(req, res) { 
    res.render(path.join(__dirname, 'view.jade')); 
}); 
Powiązane problemy