Шаблоны с Javascript или Django?

Я создаю веб-приложение Django, которое содержит много html, сгенерированных на лету с помощью запросов ajax. Прямо сейчас я использую язык шаблонов Django для создания html, а затем передаю этот новый HTML как строку в объекте JSON, который затем вводится на страницу с помощью jQuery.

Это работает достаточно хорошо, но с Javascript, который так быстро работает в современных браузерах и с таким количеством библиотек шаблонов JavaScript, мне интересно, нужно ли мне нажать все клиенты.

Итак, мой вопрос: учитывая, что моя средняя "страница" со всеми запросами и из нее должна скомпилировать около ~ 300 шаблонов (каждая около 15 или около того строк с 5 или около того замен) выходят в HTML во время его жизни есть ли существенное преимущество в производительности для создания шаблонов в браузере?

Кроме того, кто-нибудь может рекомендовать "быструю" библиотеку шаблонов Javascript? Я слышал хорошие вещи о шаблонах underscore.js, mustache.js и jQuery.

Ответы

Ответ 1

(массивное) преимущество придерживаться шаблонов Django заключается в том, что вам нужно использовать только один язык шаблонов, который сохраняет те же возможности, независимо от страницы, которую вы хотите создать. Если вы обнаружите, что у вас проблемы с производительностью, вы должны рассмотреть возможность поиска фрагментов кеширования.

Ответ 2

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

Каждый раз, когда вы создаете сервер страницы, используется количество времени обработки и пропускная способность сети. Это то, что вы платите, если используете хостинговые серверы.
Хотя пользовательский браузер ожидает отклика на обычно неактивном компьютере для ответа.

Если вы отправляете шаблон на клиенте (HTML + JS), они могут быть кэшированы для сеанса или даже дней, если пользователь не удаляет их.
Это уменьшает сетевой трафик для доставки того же содержание различный раз. Поскольку данные, как правило, меньше, чем их эквивалентный отображаемый HTML.

Как вы указываете, в настоящее время механизмы Javascript очень быстры, а также компьютер, на котором они запускаются. Каждый раз, когда вы отправляете работу рендеринга клиенту, вы сохраняете некоторое время обработки для своего сервера и доставляете быстрее данные.

Мы с другой стороны, поскольку мы запускаем все на клиенте, и поэтому мы создали PURE для ультра- быстрое рендеринг клиента. Наше приложение выглядит очень быстро в результате этой децентрализации.

Ответ 3

Почему вы передаете HTML как JSON? Просто отправьте HTML-код и используйте функцию jQuery $.html(), чтобы поместить его в <div> или что-то еще.

Что касается шаблонов в Javascript, там Pure. Если вы используете jQuery (я бы рекомендовал его), он уже имеет механизм шаблона.

Ответ 4

Возможно создание шаблонов с двумя целями - с тем, чтобы они могли быть помещены в заполнители для замены на js, и в то же время они могли бы отображаться обычно для вывода сервера. Только несколько шаблонов должны иметь такую ​​же двойственную цель - фрагменты, которые должны быть заменены на js.

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

В идеале вы можете захотеть, чтобы шаблоны были скомпилированы в надежный код функции javascript, а также обычную строку для вывода сервером.

Закрытие шаблонов называется Soy, решите проблему красиво, но не (возможно, пока) работайте с python, но они работают с Java и Javascript. Надеюсь, в один прекрасный день будет поддержка python.

Но даже если это произойдет, язык шаблонов будет, вероятно, более ограниченным, так как будет сложно сделать такие вещи, как .get_absolute_url(), фильтры и т.д. работать как в python, так и в javascript - все автоматически.