Modèles Express

Express est capable de gérer les moteurs de modèles côté serveur. Les moteurs de modèles nous permettent d'ajouter des données à une vue et de générer du HTML de manière dynamique.

Express est capable de gérer les moteurs de modèles côté serveur.

Les moteurs de modèles nous permettent d'ajouter des données à une vue et de générer du HTML de manière dynamique.

Express utilise Jade par défaut. Jade est l'ancienne version de Pug, en particulier Pug 1.0.

Le nom a été changé de Jade à Pug en raison d'un problème de marque en 2016, lorsque le projet a publié la version 2. Vous pouvez toujours utiliser Jade, alias Pug 1.0, mais à l'avenir, il est préférable d'utiliser Pug 2.0

Bien que la dernière version de Jade ait 3 ans (au moment de la rédaction de cet article, été 2018), elle est toujours la valeur par défaut dans Express pour des raisons de rétrocompatibilité.

Dans tout nouveau projet, vous devez utiliser Pug ou un autre moteur de votre choix. Le site officiel de Pug esthttps://pugjs.org/.

Vous pouvez utiliser de nombreux moteurs de modèles différents, y compris Pug, Handlebars, Moustache, EJS et plus encore.

Utiliser Pug

Pour utiliser Pug, nous devons d'abord l'installer:

npm install pug

et lors de l'initialisation de l'application Express, nous devons la définir:

const express = require('express')
const app = express()
app.set('view engine', 'pug')

Nous pouvons maintenant commencer à écrire nos modèles dans.pugdes dossiers.

Créez une vue à propos:

app.get('/about', (req, res) => {
  res.render('about')
})

et le modèle dansviews/about.pug:

p Hello from Flavio

This template will create a p tag with the content Hello from Flavio.

You can interpolate a variable using

app.get('/about', (req, res) => {
  res.render('about', { name: 'Flavio' })
})
p Hello from #{name}

This is a very short introduction to Pug, in the context of using it with Express. Look at the Pug guide for more information on how to use Pug.

If you are used to template engines that use HTML and interpolate variables, like Handlebars (described next), you might run into issues, especially when you need to convert existing HTML to Pug. This online converter from HTML to Jade (which is very similar, but a little different than Pug) will be a great help: https://jsonformatter.org/html-to-jade

Also see the differences between Jade and Pug

Using Handlebars

Let’s try and use Handlebars instead of Pug.

You can install it using npm install hbs.

Put an about.hbs template file in the views/ folder:

Hello from {{name}}

and then use this Express configuration to serve it on /about:

const express = require('express')
const app = express()
const hbs = require('hbs')

app.set(‘view engine’, ‘hbs’) app.set(‘views’, path.join(__dirname, ‘views’))

app.get(’/about’, (req, res) => { res.render(‘about’, { name: ‘Flavio’ }) })

app.listen(3000, () => console.log(‘Server ready’))

You can also render a React application server-side, using the express-react-views package.

Start with npm install express-react-views react react-dom.

Now instead of requiring hbs we require express-react-views and use that as the engine, using jsx files:

const express = require('express')
const app = express()

app.set(‘view engine’, ‘jsx’) app.engine(‘jsx’, require(‘express-react-views’).createEngine())

app.get(’/about’, (req, res) => { res.render(‘about’, { name: ‘Flavio’ }) })

app.listen(3000, () => console.log(‘Server ready’))

Just put an about.jsx file in views/, and calling /about should present you an “Hello from Flavio” string:

const React = require('react')

class HelloMessage extends React.Component { render() { return <div>Hello from {this.props.name}</div> } }

module.exports = HelloMessage

Download my free Express.js Handbook


More express tutorials: