Javascript Templating с Django

Мне бы очень хотелось использовать систему шаблонов Javascript вместе с Django. Синтаксис и стиль Mustache.js(и его производных) действительно хорошо сочетаются со мной. Проблема заключается в том, что тег разделителя, используемый Mustache, не очень хорошо сочетается с синтаксисом системы шаблонов Django.

Есть ли хороший способ использовать их вместе?

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

Я также попытался изменить разделитель на Mustache, используя

{{=[[ ]]=}}

Однако это не позволяет использовать теги секций, например {{#}}. Автор сказал, что намерен полностью удалить эту возможность в будущих выпусках.

Существуют ли библиотеки шаблонов для Javascript, которые внимательно следят за Mustache.js, но используют разные разделители? Или есть другое решение для изменения разделителей Mustache.js использует?

3 ответа

Я использовал jquery templating с django. В конечном итоге я решил, что лучший способ:

  • помещает все javascript в статические файлы javascript и обслуживает их без обработки серверов.
  • в шаблонах django доставляют все html-крючки (id или классы), но не js.
  • в js используйте "document.ready" плюс селектора jquery для вставки тегов в страницу и добавления событий
  • Если js нуждается в данных, тогда сделайте ajax-вызов.

Я смягчился на последнем и мог вставлять данные в виде блока json в шаблон django и, возможно, также иметь короткие js внизу шаблона, которые выполняют не более, чем задают переменные/параметры, чтобы проинструктировать js как для рендеринга страницы - небольшие подсказки со стороны сервера, говорящие, что делать.

Таким образом:

  • Конфликт между escape-символами становится не-проблемой
  • вам не нужно постоянно спрашивать себя: "этот код работает на сервере или на клиенте", потому что вы не пытаетесь сразу написать оба файла в один файл.
  • ваш код javascript обязательно лучше структурирован и повторно используется


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

Если это неприемлемо для вас, существует множество других библиотек шаблонов, таких как jquery-tmpl и underscore.template.


EJS - довольно приятная система шаблонов. Он использует теги <% %>.

Изменить: Другие шаблоны libs

licensed under cc by-sa 3.0 with attribution.