Язык шаблонов, похожий на усы, с расширениями?

Мне нравится минималистичность языков шаблонов в стиле усов — в настоящее время я использую mustache и icanhasmustache, но я также проверил handlebars и хоган.

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

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


person mikemaccana    schedule 07.03.2012    source источник
comment
Может быть, это поможет (подделка расширения шаблона в mustache.js) расширение"> stackoverflow.com/questions/7925931/   -  person WTK    schedule 07.03.2012
comment
@WTK Спасибо. Я видел этот ответ - сами по себе усы этого не делают. Мой вопрос, возможно: что-нибудь еще? Использование статической функции для № 2 в отмеченном ответе означает, что вам понадобится функция для каждого родителя.   -  person mikemaccana    schedule 07.03.2012


Ответы (3)


Реализация Twitter Mustache, Hogan, похоже, теперь поддерживает наследование.

См. этот недавний коммит: Hogan 3. Добавьте наследование шаблонов...

person KajMagnus    schedule 18.04.2012

Ответ 2016 года:

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

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

исходный ответ: очень немногие библиотеки JS реализуют функциональность типа «расширения».

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

Я остановился на Dust.JS, так как он использует разделы в виде усов, работает на клиенте и сервере. , и поддерживает переопределение блоков родителя из дочернего, обеспечивая эффективную поддержку расширений.

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

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

Переопределение разделов title и main из родительского шаблона с сохранением окружающего содержимого.

person mikemaccana    schedule 13.03.2012

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

РЕДАКТИРОВАТЬ:

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

person Aram Kocharyan    schedule 24.04.2013