Nel post precedente abbiamo visto come iniziare ad usare Express, ora vediamo come usare un template engine: Jade.
Jade non è un template engine classico, non dobbiamo scrivere i tag html ma dobbiamo usare una nuova sintassi (basata sull'indentazione e non tanto difficile da imparare), con questo sistema diventa impossibile commettere errori di sintassi durante la scrittura dell'html e ciò ci permetterà anche di evitare errori 'invisibili' su IE quando sviluppiamo applicazioni.
Prima cosa configuriamo le nostre dipendenze, modifichiamo il file package.json
{
"name": "my-app",
"description": "Un'app incredibile",
"version": "0.0.1",
"dependencies": {
"express": ">=3.x",
"jade": "*"
}
}
Diamo il comando per risolvere le dipendenze
> npm install
Ora diciamo alla nostra applicazione che deve usare jade come template engine, configuriamo il path che conterrà le view e creaimo una action che usa un template utilizzando la funzione res.render
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.get('/hello', function(req, res) {
res.render('hello', {name: req.param('name')});
});
A questo punto possiamo creare all'interno della root del progetto una direcotry views che conterrà i file layout.jade, hello.jade e inc/footer.jade
layout.jade
doctype 5
html(lang="it")
head
title Hello World
body
#container
block content
include inc/footer
hello.jade
extends layout
block content
h1.hello Hello
if name
small= name
i !
else
small world!
inc/footer.jade
p#footer | An example of an a(href='#') inline | link.
Visitiamo col browser la pagina http://localhost:3000/hello?name=antonio il risultato sarà il seguente html
<!DOCTYPE html>
<html lang="it">
<head>
<title>Hello World</title>
</head>
<body>
<div id="container">
<h1 class="hello">Hello <small>antonio<i>!</i></small>
</h1>
</div>
<p id="footer">An example of an <a href="#">inline</a> link.</p>
</body>
</html>
Per maggiori informazioni sulla sintassi di jade vedere la documentazione.
Nel caso in cui non piaccia si può sempre usare un altro template engine più classico come ad esempio ejs, i passi da seguire sono sempre gli stessi basta solo importare nel progetto ejs ed usare file .ejs.