Как убедиться, что файл Javascript включен только один раз в Django - PullRequest
2 голосов
/ 10 июня 2009

У меня есть несколько дочерних шаблонов с дополнительными заголовками, которые включают скрипт jquery. Иногда они используются вместе. Как я могу загрузить javascript-файл jquery только один раз? Если бы было удобно устанавливать переменные шаблона, я мог бы установить и проверить одну перед включением строки.

Ответы [ 5 ]

8 голосов
/ 10 июня 2009

Мой совет: просто включите jQuery на <head> вашей базы и называйте это день. Избавляет вас от необходимости беспокоиться о том, использует ли дочерний шаблон jQuery или нет, и это всего лишь загрузка 19 КБ при загрузке первой страницы и все. Если вы используете облако API Google, оно может даже не быть, поскольку пользователь может кэшировать его с другого сайта.

Это может не сработать, но я советую вам рассмотреть это, если это возможно.

5 голосов
/ 10 июня 2009

Мой обычный подход к этой проблеме - это либо обернуть все мои дочерние шаблоны в один шаблон, который заботится о моих включениях (JS и CSS). Затем я проверяю, правильно ли установлено кэширование, чтобы эти сценарии загружались только один раз для каждого пользователя. Другими словами, я заставляю загрузку всех моих внешних сценариев в первом представлении, а затем полагаюсь на кэширование, чтобы не перезагружать JS каждый раз.

Объединение всех ваших JS в один файл также сократит время загрузки из-за уменьшения количества сгенерированных запросов.

Еще одна вещь, на которую стоит обратить внимание, это то, что вы упомянули, что ставите JS в голову. Хотя большинство людей делают это, размещение JS в голове может привести к тому, что ваши страницы будут загружаться медленнее. Файлы JS не загружаются параллельно, поэтому они блокируют все остальные загрузки. Google и Yahoo рекомендуют размещать JS внизу вашей страницы, где это возможно, чтобы улучшить взаимодействие с пользователем.

См. Инструмент Yahoo YSlow и Google PageSpeed ​​для этого.

3 голосов
/ 10 июня 2009

В основном я бы кусал пули и загружал jQuery с каждым шаблоном. Но если вам действительно нужно иметь эту функцию, то я бы порекомендовал собственный тег шаблона. Ознакомьтесь с документами , особенно с информацией о настройке переменной в контексте.

0 голосов
/ 10 июня 2009

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

Вы также можете управлять порядком загрузки.

0 голосов
/ 10 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...