Как отрендерить партиалы с помощью jade без express.js? - PullRequest
10 голосов
/ 23 апреля 2011

Только информация, которую я нашел, была такой:

http://forrst.com/posts/Node_js_Jade_Import_Jade_File-CZW

Я повторил предложенную структуру папок (views / partials), но она не сработала, как только я поставил

!=partial('header', {})
!=partial('menu', {})

в index.jade, я получаю пустой экран, сообщение об ошибке, которое я получаю от jade:

ReferenceError: ./views/index.jade:3 1. 'p index'
2. ''
3. '! = Частичный (\' заголовок ', {})'

частичное не определено

Буду очень признателен за любую помощь! (Я настоятельно предпочитаю не использовать express.js)

Ответы [ 4 ]

23 голосов
/ 21 июля 2011

У Jade есть команда include. Просто используйте

include _form

, учитывая, что имя частичного файла * _form.jade * и находится в том же каталоге

9 голосов
/ 09 августа 2012

По состоянию на август 2012 г. (возможно, раньше) Частичные компоненты были удалены из Express.

Многие учебные пособия устарели.Кажется, что вы можете скопировать большую часть частичной функциональности с помощью include.

Например.

movies.jade

div(id='movies')
  - each movie in movies
    include movie

movie.jade

h2= movie.title
.description= movie.description

НТН

2 голосов
/ 13 июня 2011

С последним узлом / экспрессом я получаю следующий шаблон movies.jade для вызова партиалов:

div(id='movies')
  - each movie in movies
    !=partial('movie', movie)

где у меня файл movie.jade в каталоге просмотров рядом с movies.jade.

movies.jade вызывается из app.js с:

res.render('movies', { movies: [{ title: 'Jaws' }, { title: 'Un Chien Andalou' }] });

1 голос
/ 23 апреля 2011

Я думаю, что частичный рендеринг выполняется в экспрессе, так что вам придется зацепить этот код или написать свой собственный.

У меня есть свой собственный вспомогательный класс для рендеринга нефрита с частями, которые вы можете использовать или получить некоторые идеи.от здесь , (используется Joose и Cactus )

...