Подтвердить что ты не робот

На стороне клиента (JavaScript) Наследование шаблонов Django/Jinja

Я ищу способ наследования шаблонов для группы файлов .html, которые у меня есть.

Скажем, у меня есть файл base.html, который имеет общий HTML для всех страниц моего сайта, то есть заголовок, нижний колонтитул и т.д. Каждая страница, включая главную (индексную) страницу, должна наследовать из этого HTML файла шаблона.

Теперь это выполнимо на стороне сервера, используя Django Jinja template langauge. Но это не очень хорошее решение для меня. Мои HTML-страницы хранятся удаленно, и я не контролирую сервер, хранящий их. Это должно быть сделано на стороне клиента, с или без JavaScript.

Кто-то спросил об этом раньше, и единственным полупериодным решением, которое я нашел, было использование Частицы усов, которые на самом деле не выполняют эту работу.

Кто-нибудь знает способ сделать это на стороне клиента?

4b9b3361

Ответ 1

1. Да, с Dustjs вы можете "иметь шаблон, наследующий основную часть своего контента из общего базового шаблона".

Ознакомьтесь с документами Dustjs: Dustjs, раздел "Блоки и встроенные частицы".

(Я отправил ответ на соответствующий вопрос, здесь: fooobar.com/questions/398558/...)


2. Там также идет некоторая работа над добавлением наследования шаблонов к Handlebars, см. Другой ответ моей на "другую версию" "этого вопроса: fooobar.com/questions/398558/....

Он ссылается на эту проблему GitHub: https://github.com/wycats/handlebars.js/issues/208, и это сообщение в блоге: Наследование шаблонов для ручек

Ответ 3

Jade предлагает полное наследование шаблонов: https://github.com/visionmedia/jade#a11

Помимо полного перекрытия блока, вы также можете добавлять или добавлять контент в блок. Вот пример, захваченный из документации:

Определите базовый шаблон в layout.html:

html
  head
    h1 My Site - #{title}
    block scripts
      script(src='/jquery.js')
  body
    block content
    block foot
      #footer
        p some footer content

Добавьте теги script и замените раздел содержимого в content.html:

extends layout

block append head
  script(src='/vendor/three.js')
  script(src='/game.js')

block content
  .sidebar
    block sidebar
      p nothing
  .primary
    block primary
      p nothing

Ответ 4

Шаблон jQuery имеет {{wrap}} тег шаблона  которые могут быть использованы для этого.