2012-07-05 3 views
26

Хорошо, у меня есть статичная домашняя страница, но я хотел иметь частичные виды, которые для навигации, footer ect. Я использую EJS и это выглядит следующим образом:Частичный 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'); 


     } 
    }; 

Мой каталог просмотров имеет Nav, дома и колонтитула все .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> 

Проблема Когда я когда-нибудь проверить это я бегу в ошибку частичной не определена. Я пытался требовать ejs, но не имел успеха.

ответ

4

Частичный был удален в 3.x. Теперь механизм шаблонов теперь может быть частичным.

+1

До ejs или экспресс – lostAstronaut

+0

ejs. Существует проект моста для express.js и много шаблонов, которые называются консолидатами.js, и их можно найти здесь: https://github.com/visionmedia/consolidate.js – Pickels

+6

По иронии судьбы, это всего лишь «частичная», ответ. Можете ли вы дать объяснение, как заставить Partials работать в express 3.x и EJS с помощью консолидации. Js? – Joshua

53

Как сказал @Pickels, Partial был удален в 3.x. Тем не менее, самая последняя версия EJS обеспечивает механизм для включения «парциальных», называемые «включают»:

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

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

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

<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> --> 
+3

Здесь нужно указать имя файла: http://stackoverflow.com/a/13537052/131809 – Alex

+0

Кроме того, в разделе макета сайта ejs приведен пример использования https: // github. com/visionmedia/ejs/blob/master/Readme.md #, чтобы поддерживать что-то вроде того, что вы ищете. –

+0

Любая идея, как включить частичный в родительский каталог? Использование '../ path/partial' не работает вообще ... – Vadorequest

Смежные вопросы