Utilizzando Express senza un motore di template
Domanda
E 'possibile creare un'applicazione espresso (nodo) senza la necessità di un motore di template, come giada o di ejs. Ho un grande progetto ultimo anno all'università e ho intenzione di utilizzare il nodo, esprimere, socket.io, MongoDB e WebSockets. Non voglio gravare me stesso con dover imparare un linguaggio di templating troppo!
Per impostazione predefinita Express utilizza giada -t, supporto modello Add --template (giada | ejs). default = giada
Soluzione
E 'possibile creare un'applicazione espresso (nodi), senza bisogno di un motore di template, come giada o ejs
Sì, lo è. Si può solo usare l'HTML. O semplicemente usare EJS. EJS è un superset di HTML.
Non voglio gravare me stesso con dover imparare un linguaggio di templating troppo!
Si può imparare un linguaggio di template in un giorno. E 'davvero essere di aiuto. Fallo e basta. Ne vale la pena.
Altri suggerimenti
Se si desidera solo per evitare imparare un'altra lingua modello, si potrebbe voler dare sottolineatura modelli di una prova. Sono solo javascript, che si sta andando ad essere in ogni caso l'apprendimento.
documentcloud.github.com/underscore/#template
È possibile configurarlo con:
app.register('.html', {
compile: function(str, options){
var compiled = require('underscore').template(str);
return function(locals) {
return compiled(locals);
};
}
});
Il modo più semplice per farlo sarebbe quello di sostituire l'app.get di default ( '/') ... linea con quanto segue. Poi mettere tutta la magia in index.html. Questo almeno il lavoro abbastanza bene per una pagina singola applicazione.
con il seguente
app.get('/', function(request, response) {
var readFile = "index.html";
var fileContents = fs.readFileSync(readFile);
response.send(fileContents.toString());
});
L'opzione migliore in questo momento è quello di utilizzare ejs (motore) e configurarlo per accettare e il rendering html:
app.set('views', path.join(*__dirname*, 'views'))
app.set('view engine', 'ejs'); // template engine
app.engine('html', require('ejs').renderFile); // turn engine to use html
Nota: Tutti i vostri punti di vista o modelli hanno l'estensione .html