web-dev-qa-db-fra.com

Node.js - EJS - y compris un partiel

J'essaie d'utiliser le moteur de rendu Javascript intégré pour le nœud: https://github.com/visionmedia/ejs

Je voudrais savoir comment inclure un autre fichier de vue (partiel) dans un fichier de vue .ejs.

56
jeffreyveon

Avec Express 3.0:

<%- include myview.ejs %>

le chemin est relatif de l'appelant qui inclut le fichier, pas du répertoire de vues défini avec app.set("views", "path/to/views").

EJS comprend

112
pkyeck

Dans Express 4.x J'ai utilisé ce qui suit 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'});
  });

Ensuite, il vous suffit 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 également indiquer à 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 module de disposition ejs:

var EJSLayout = require('express-ejs-layouts');
app.use(EJSLayout);

Cela utilisera le views/layout.ejs comme mise en page.

16
czerasz

à partir d'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');

error.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 %>
9
Daniel Ram

Express 3.x ne prend plus en charge partielle. Selon le post ejs 'partial n'est pas défini' , vous pouvez utiliser le mot clé "include" dans EJS pour remplacer la fonctionnalité partielle supprimée.

3
VCD

Essayez d'utiliser tout le chemin ==>

<% incluent C:/Users/serName/Desktop/NodeJS/partials/header.ejs%> ---> faites attention à '/'

Je l'ai essayé avec le noeud --version v8.11.4 + module express v.4.x

0
fefy fefi