2011-09-06 18 views
9

È possibile creare un'applicazione express (nodo) senza la necessità di un motore di template come jade o ejs. Ho un grande progetto per l'ultimo anno all'università e userò node, express, socket.io, mongoDB e websockets. Non voglio caricarmi di dover imparare anche un linguaggio di template!Utilizzo di Express senza un motore di template

Da espresso default utilizza giada -t, --template aggiungere il supporto template (giada | ejs). default = giada

risposta

12

E 'possibile creare un'applicazione espresso (nodo) senza la necessità di un motore di template, come giada o ejs

Sì, lo è. Puoi semplicemente usare l'HTML. O semplicemente usa EJS. EJS è un superset di HTML.

Non voglio caricarmi di dover imparare anche un linguaggio di template!

È possibile imparare una lingua di template in un giorno. Ti aiuterà davvero. Fallo. Ne vale la pena.

+0

hai sempre una risposta quando si tratta di qualcosa di JavaScript correlato, e le tue risposte sono sempre al punto e informativo. Grazie! – Jack

+1

@JackBrown [Puoi venire a chattare per domande rapide] (http://chat.stackoverflow.com/rooms/642/node-js) – Raynos

+5

penso che non si tratta di imparare un nuovo linguaggio template, penso solo di usare un motore di template rovinerebbe le tue pagine html. Immagina di avere molte pagine html ben progettate, devi tradurle in un formato di template completamente nuovo, che è male. – silent

3

Se si desidera evitare l'apprendimento di un altro linguaggio di modello, è consigliabile provare i modelli di sottolineatura. Sono solo javascript, che imparerai comunque.

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

modo più semplice per farlo sarebbe quello di sostituire l'app.get di default ('/') ... linea con quanto segue. Quindi metti tutta la magia in index.html. Questo almeno funzionerà abbastanza bene per una singola app.

con il seguente

app.get('/', function(request, response) { 
var readFile = "index.html"; 
var fileContents = fs.readFileSync(readFile); 

response.send(fileContents.toString()); 
}); 
1

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.

Problemi correlati