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.

49
demandé sur jeffreyveon 2011-03-23 14:54:57

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") .

EJS comprend

99
répondu pkyeck 2013-04-01 07:31:20

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.

12
répondu czerasz 2015-09-19 12:26:50

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 %>
8
répondu Daniel Ram 2016-01-11 22:36:45

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.

3
répondu VCD 2017-05-23 11:33:26

EJS par lui-même ne permet pas actuellement les partiels de vue. Express n'.

-3
répondu jeffreyveon 2011-05-11 03:40:22