ejs 'partial is not defined'

Хорошо, у меня есть в основном статическая домашняя страница, но я хотел бы иметь частичные представления, которые для навигации, нижнего колонтитула и т.д. Я использую ejs и это выглядит следующим образом:

мой контроллер: 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');

        }
    };

В моем каталоге views есть nav, home и footer - все .ejs

Тогда фактический html-файл, очищенный от текста, будет выглядеть следующим образом.

<!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>

Проблема При тестировании я сталкиваюсь с ошибкой partial is not defined. Я пробовал требовать ejs, но безуспешно.

Как сказал @Pickels, Partial был удален в версии 3.x. Однако последняя версия EJS предоставляет механизм для включения "частей", который называется "include":

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

Включение происходит относительно шаблона с оператором include, например, если у вас есть "./views/users.ejs" и "./views/user/show.ejs", вы будете использовать . Включенный файл(ы) буквально включается в шаблон, после компиляции не выполняется IO, поэтому локальные переменные доступны для этих включенных шаблонов.

Следующая функция будет работать как замена вашей старой функции partial(). Для полной поддержки Express 3.x вам потребуется внести изменения в другие функции, но по большей части это работает хорошо (даже лучше - меньше кода и больше производительности).

Комментарии (7)

Partial был удален в версии 3.x. Теперь предоставление partials зависит от шаблонизатора.

Комментарии (3)