D'accord, j'ai une page d'accueil principalement statique mais je voulais avoir des vues partielles pour la navigation, ect pied de page. J'utilise ejs et cela ressemble à ceci:
mon contrôleur: home.js
// Dependencies
var express = require('express');
module.exports = {
get: function(req, res) {
app.set('view engine', 'ejs');
var model = {
layout:'home',
};
res.render('home');
}
};
Mon répertoire de vues a nav, home et footer tous les .ejs
Ensuite, le fichier HTML réel dépourvu de texte se présenterait comme suit.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<title>Tom Jones</title>
<!-- CSS -->
<link rel="stylesheet" href="/css/home.css" type="text/css" media="screen" >
</head>
<body>
<%- partial('nav') %>
<!--content part -->
<div id="showcontainer">
<section>
</section>
</div>
<div id="maincontainer">
<section>
</section>
</div>
</body>
</html>
Le problème Chaque fois que je le teste, je rencontre l'erreur partielle qui n'est pas définie. J'ai essayé d'exiger des ejs mais sans succès.
Comme l'a dit @Pickels, Partial a été supprimé en 3.x. Cependant, la version la plus récente d'EJS fournit un mécanisme pour inclure les "partiels", appelés "include":
https://github.com/visionmedia/ejs#includes
Les inclusions sont relatives au modèle avec l'instruction include, par exemple si vous avez "./views/users.ejs" et "./views/user/show.ejs" que vous utiliseriez <% include user/show%>. Le ou les fichiers inclus sont littéralement inclus dans le modèle, aucun IO est effectué après la compilation, donc des variables locales sont disponibles pour ces modèles inclus.
Ce qui suit remplacera votre ancienne fonction partial (). Vous devrez apporter des modifications ailleurs pour prendre en charge Express 3.x complètement, mais pour la plupart, cela semble bien fonctionner (mieux en fait - moins de code et plus performant).
<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> -->
Le partiel a été supprimé en 3.x. C'est maintenant au moteur de modèles de fournir des partiels.