2012-03-07 8 views
4

Мне нравятся минимальные языки программирования шаблонов усов - в настоящее время я использую mustache и icanhasmustache, но я также проверил handlebars и hogan.Усамообразный язык шаблонов с расширением?

Однако у меня есть необходимость в функциональности типа «extends», чтобы позволить ребенку ссылаться на определенный родительский шаблон. Я не могу найти документацию о том, как расширения выполняются в любом из вышеперечисленных, но я видел (из случайных githib gists), что другие люди делают это.

Примечание: Я знаю о существовании включений (иногда называемых частицами), однако, похоже, для родителя, чтобы ссылаться на конкретный ребенок. Это противоположность тому, что я ищу - дочерний шаблон в этом случае является реальным «базовым» документом, а родительский просто случайным, поэтому я хочу, чтобы ребенок контролировал отношения.

+0

Возможно, это поможет (шаблон для подделки расширяется в mustache.js) http://stackoverflow.com/questions/7925931/can-mustache-templates-do-template-extension – WTK

+0

@WTK Спасибо. Я видел этот ответ - усы сами этого не делают. Возможно, мой вопрос: что-то еще? Использование статической функции на # 2 в отмеченном ответе означает, что вам нужна функция для каждого родителя. – mikemaccana

ответ

8

2016 ответ:

Если вы используете экспресс, расположение промежуточного слоя принимает layout вариант, который вы можете найти полезным.

res.render('page', { layout: 'mylayout.jade' }) 

оригинальный ответ: Очень немногие библиотеки JS реализовать «функциональность extends' типа.

  • Nun очень усы, как, но только для сервера (и больше не поддерживается)
  • Swig имеет расширяет, но не очень усы подобные.
  • Jade имеет расширяется и работает в браузере, но не усы, как

я остановился на Dust.JS, так как он использует усы, как секции, работает на клиенте и на сервере, и поддерживает верховные блоки на родителях от ребенка, давая эффективную поддержку.

Смотрите документацию пыли, «Блоки и INLINE частичный» раздел:

{>base_template/} 
{<title} 
    Child Title 
{/title} 
{<main} 
    Child Content 
{/main} 

Переопределение «названия» и «основные» разделы из родительского шаблона, сохраняя окружающее содержимое.

5

Я ищу в Nunjucks, который обещает исправить некоторые проблемы, а также поддерживают наследование.

EDIT:

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