Je suis en train d'essayer d'utiliser le moteur de rendu JavaScript intégré 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 de rendu JavaScript intégré 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.
Avec Express 3.0 :
<%- include myview.ejs %>
le chemin est relatif à l'appelant qui inclut le fichier, et non au répertoire des vues défini avec app.set("views", "chemin/vers/vues")
.
Inclusions EJS v1
Inclusions EJS v2
(Mise à jour : la syntaxe la plus récente pour ejs v3.0.1 est <%- include('myview.ejs') %>
)
En ejs2, j'avais du code qui ressemblait à ceci et qui fonctionnait. <% include myview.ejs %> En ejs3, il doit ressembler à 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? (Je rajoute ce commentaire au cas où quelqu'un d'autre dans la même situation le lirait.)
Dans Express 4.x
, j'utilisais 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 le faire fonctionner - views/index.ejs
:
<%- include partials/navigation.ejs %>
Et le fichier views/partials/navigation.ejs
:
......
Vous pouvez également indiquer à Express d'utiliser ejs
pour les modèles 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 fichier views/layout.ejs
comme mise en page.
À partir de Express 4.x
app.js
// ci-dessus se trouvent toutes vos nécessités pour le noeud
// 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 balisage ici
<% include ./base/footer %>
Express 3.x ne prend plus en charge partiellement. Selon l'article ejs 'partial is not defined', vous pouvez utiliser le mot-clé "include" dans EJS pour remplacer la fonctionnalité partiellement 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 fait 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 modèles.