Je suis en train d'essayer d'utiliser le moteur d'incorporation de JavaScript pour Node : https://github.com/visionmedia/ejs
J'aimerais savoir comment je peux inclure un autre fichier de vue (partiel) à l'intérieur d'un fichier de vue .ejs.
Je suis en train d'essayer d'utiliser le moteur d'incorporation de JavaScript pour Node : https://github.com/visionmedia/ejs
J'aimerais savoir comment je peux inclure un autre fichier de vue (partiel) à l'intérieur d'un fichier de vue .ejs.
En ejs2, j'avais du code qui ressemblait à ceci et qui fonctionnait. <% include myview.ejs %> En ejs3, il faut que cela ressemble à ceci <%- include('myview.ejs') %> Devinez le nombre d'heures qu'il m'a fallu pour réaliser que je devais ajouter le tiret au début ? (J'ajoute simplement ce commentaire au cas où quelqu'un d'autre dans la même situation le lise.)
Dans Express 4.x
, j'ai utilisé ce qui suit pour charger ejs
:
var path = require('path');
// Définir le moteur de template par défaut sur ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// Le fichier views/index.ejs existe dans le répertoire de l'application
app.get('/hello', function (req, res) {
res.render('index', {title: 'title'});
});
Ensuite, vous avez juste besoin de deux fichiers pour faire fonctionner - views/index.ejs
:
<%- include partials/navigation.ejs %>
Et le views/partials/navigation.ejs
:
......
Vous pouvez également dire à Express d'utiliser ejs
pour les templates html:
var path = require('path');
var EJS = require('ejs');
app.engine('html', EJS.renderFile);
// Définir le moteur de template par défaut sur ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// Le fichier views/index.html existe dans le répertoire de l'application
app.get('/hello', function (req, res) {
res.render('index.html', {title: 'title'});
});
Enfin, vous pouvez également utiliser le module de mise en page ejs
:
var EJSLayout = require('express-ejs-layouts');
app.use(EJSLayout);
Cela utilisera le views/layout.ejs
comme votre mise en page.
À partir de Express 4.x
app.js
// ci-dessus sont toutes vos dépendances node
// configuration du moteur de vue
app.set('views', path.join(__dirname, 'views')); <-- ./views contient tous vos fichiers .ejs
app.set('view engine', 'ejs');
error.ejs
<% include ./base/header %>
Autre balises ici
<% include ./base/footer %>
Express 3.x ne prend plus en charge les partiels. Selon l'article ejs 'partial is not defined', vous pouvez utiliser le mot-clé "include" dans EJS pour remplacer la fonctionnalité partielle supprimée.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Le système partiel fait en réalité partie d'ExpressJS, je crois. Utilisez-vous le framework Express ?
0 votes
Non, je n'utilise pas ça. Je devrais probablement emprunter cette voie si ce n'est pas possible avec juste un moteur de template.