Nœud.js - EJS - partiel
j'essaie d'utiliser Javascript pour noeud: https://github.com/visionmedia/ejs
je voudrais savoir comment je peux inclure un autre fichier de vue (partielle) à l'intérieur d'un .ejs fichier de la vue.
5 réponses
Avec Express 3.0:
<%- include myview.ejs %>
le chemin est relatif par rapport à l'appelant qui inclut le fichier, et non par rapport au répertoire des vues défini par app.set("views", "path/to/views")
.
En Express 4.x
j'ai utilisé la commande suivante pour charger ejs
:
var path = require('path');
// Set the default templating engine to ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// The views/index.ejs exists in the app directory
app.get('/hello', function (req, res) {
res.render('index', {title: 'title'});
});
alors vous avez juste besoin de deux fichiers pour le faire fonctionner - views/index.ejs
:
<%- include partials/navigation.ejs %>
et le views/partials/navigation.ejs
:
<ul><li class="active">...</li>...</ul>
vous pouvez aussi dire à Express d'utiliser ejs
pour les modèles html:
var path = require('path');
var EJS = require('ejs');
app.engine('html', EJS.renderFile);
// Set the default templating engine to ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// The views/index.html exists in the app directory
app.get('/hello', function (req, res) {
res.render('index.html', {title: 'title'});
});
enfin, vous pouvez également utiliser le ejs
module de mise en page:
var EJSLayout = require('express-ejs-layouts');
app.use(EJSLayout);
utilisez le views/layout.ejs
pour votre mise en page.
Comme de l'Express-4.x
app.js
// above is all your node requires
// view engine setup
app.set('views', path.join(__dirname, 'views')); <-- ./views has all your .ejs files
app.set('view engine', 'ejs');
erreur.ejs
<!-- because ejs knows your root directory for views, you can navigate to the ./base directory and select the header.ejs file and include it -->
<% include ./base/header %>
<h1> Other mark up here </h1>
<% include ./base/footer %>
Express 3.x ne supporte plus partial. Selon le post ejs 'partial is not defined ' , vous pouvez utiliser le mot-clé" include " dans EJS pour remplacer la fonctionnalité partielle retirée.
EJS par lui-même ne permet pas actuellement les partiels de vue. Express n'.