Клиентское (JavaScript) наследование Django / Jinja-подобных шаблонов - PullRequest
13 голосов
/ 10 августа 2011

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

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 31 января 2012

Я только что выпустил это для той же цели: https://github.com/ericclemmons/jinja.js

2 голосов
/ 15 сентября 2012

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

Ознакомьтесь с документами Dustjs, здесь: Dustjs раздел «Блоки и встроенные партиалы».

(я отправил ответ на связанный вопрос, здесь: https://stackoverflow.com/a/12432034/694469)


2.Также идет работа над добавлением наследования шаблонов к Рулям , см. Еще один мой ответ на «другую версию» этого вопроса: https://stackoverflow.com/a/12432490/694469.

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

1 голос
/ 29 мая 2013

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

Добавьте несколько тегов скрипта и замените раздел содержимого в 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
0 голосов
/ 10 августа 2011

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

...