2016-01-09 33 views
5

Express

W vanilla Express.js następujący kod działa ładnie.Czy w Sails.js można używać wielu silników szablonów?

var app = require('express')(); 

app.get('/jade', function(req, res) { 
    res.render('slash.jade'); 
}); 

app.get('/ejs', function(req, res) { 
    res.render('slash.ejs'); 
}); 

app.listen(1338); 

Dopóki moduły są obecne w node_modules oba wzory są świadczone przez odpowiednie silniki.

Można także określić domyślny silnik tak:

app.set('view engine', 'haml'); 
app.get('/', function(req, res) { 
    res.render('slash'); //looks for slash.haml in views directory 
}); 

W Express widok domyślny silnik jest używany tylko wtedy, gdy the extension is omitted.

Sails

W Sails.js, wydaje się, że silnik określony config/view.js to jedyny silnik kiedykolwiek.

Gdyby spróbować określić rozszerzenie bezpośrednio, pojawia się następujący błąd:

error: Ignoring attempt to bind route (/barn) to unknown view: barn.jade 

Czy możliwe jest wykorzystanie różnych silników widok bez dużej ilości voodoo w żagle?

Odpowiedz

1

Krótka i najdokładniejsza odpowiedź brzmi: nie.

Z nudów, spojrzałem na to pytanie i zrobiłem głębokie zanurzenie w widoku kodu silnika w żagle. W razie zainteresowania można również znaleźć te pliki w projekcie żagli, przechodząc do katalogu:

node_modules\sails\lib\hooks\views

Co znajdziesz, to żagle po wyjęciu z pudełka, jest skonfigurowany do korzystania tylko jeden silnik widoku. W powyższym katalogu znajduje się plik o nazwie configure.js, w którym odbywa się logika stojąca za ustawianiem silnika widoku niestandardowego.

Oto urywek z kodu

// Normalize view engine config and allow defining a custom extension 
if (_.isString(sails.config.views.engine)) { 
    var viewExt = sails.config.views.extension || sails.config.views.engine; 
    sails.config.views.engine = { 
      name: sails.config.views.engine, 
      ext: viewExt 
    }; 
} 

// Get the view engine name 
var engineName = sails.config.views.engine.name || sails.config.views.engine.ext; 

Niestety, nie ma pętli poprzez ustawienie kilku silników. Żagle po prostu używają silnika przekazanego w parametrze sails.config.views.engine i idą stamtąd.

+0

Tak właśnie zaczynałem rozumieć. Dzięki za sprawdzenie! –