ejs "partielle n'est pas défini"

OK j'ai une page d'accueil essentiellement statique mais je voulais avoir des vues partielles que pour la navigation, pied de page ect. J'utilise des EJ et ça ressemble à ça:

mon contrôleur: à la maison.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, la maison et le pied de page .ejs

alors le fichier html réel dépouillé du texte ressemblerait 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 Quand je le teste, je tombe dans l'erreur. partielle n'est pas défini. J'ai essayé d'exiger des EJ, mais sans succès.

28
demandé sur lostAstronaut 2012-07-05 23:59:53

2 réponses

comme @Pickels l'a dit, Partial a été supprimé en 3.x. Cependant, la version la plus récente des EJ prévoit un mécanisme pour inclure les "partiels", appelés "include":

https://github.com/visionmedia/ejs#includes

Comprend le sont par rapport au modèle avec l'instruction inclure, par exemple, si vous avez "./ views / users.ejs" et "./vues/utilisateur/montrer.ejs", vous devez utiliser <% utilisateur/afficher %>. Inclus le(S) fichier (s) sont littéralement inclus dans le modèle, aucun IO n'est effectué après la compilation, donc les variables locales sont disponibles pour ces modèles inclus.

ce qui suit remplacera votre ancienne fonction partielle (). Vous aurez besoin de faire des modifications ailleurs pour soutenir Express 3.x complètement, mais pour la plupart, cela semble bien fonctionner (mieux - moins de code et plus performant).

<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> -->
55
répondu Joshua 2012-11-26 17:07:19

Partielle a été supprimé dans le 3.x. C'est maintenant au moteur de templage de fournir les partiels.

4
répondu Pickels 2012-07-05 20:05:43