HTML5 Boilerplate специфичное для страницы размещение Javascript - PullRequest
6 голосов
/ 20 декабря 2011

Вопрос

Если вы используете один файл javascript для хранения всех сценариев, куда вы помещаете сценарии, предназначенные только для одной страницы?

Фон

Это может бытьвопрос мнения или "наилучшей практики", но меня интересуют мнения других:

Я использую html5 Boilerplate для проекта.Они рекомендуют поместить весь javascript в один файл script.js для скорости и согласованности.Кажется разумным.

Однако у меня есть небольшой скрипт геолокации, который относится только к одной странице, а не к другим.Должен ли я нарушить соглашение и просто поместить этот скрипт на страницу ниже моих обращений к библиотекам javascript, от которых это зависит?Просто поместите вызовы к соответствующим функциям (расположенным в файле script.js), ниже ссылок на библиотеки, от которых они зависят?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 20 декабря 2011

Хорошие люди в шаблоне html5 рекомендуют поместить весь ваш javascript в script.js, чтобы браузер должен был загружать только этот один файл (вместе с другими, которые использует h5bp) и разрешить кэширование этого файла.

Идея состоит не в том, чтобы быть «рекомендованным», а в том, чтобы думать о вещах, связанных с вашими собственными приложениями.

  • Этот файл геолокации будет использоваться только на этой странице, верно? Он никогда больше не будет использоваться.
  • Файл script.js будет использоваться на нескольких страницах.

Что ж, тогда не имеет смысла помещать «целый скрипт», который понадобится только на одну страницу в файле script.js. Вы должны сделать файл внешним и вызывать его отдельно на той странице, которая ему нужна. Это не даст вам раздуть файл script.js для функций, которые могут никогда не использоваться этим пользователем.

Однако, если ваш «весь скрипт» для функции геолокации довольно мал, включите его в script.js. Если это не увеличивает скорость загрузки этого файла, то имеет смысл включить его туда.

Суть всего этого в том, Каков наилучший компромисс для моего приложения?

То, что мы знаем, чтобы быть правдой:

  • кэшированные файлы js хороши
  • меньше файлов для скачивания хорошо
  • файлы меньшего размера для скачивания хороши
  • обслуживание важно

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

1 голос
/ 20 декабря 2011

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

0 голосов
/ 20 декабря 2011

Я думаю, вы должны поместить его в отдельный файл.Помещение всех сценариев в один файл может вызвать неожиданное поведение и конфликты.Мне нравится иметь один файл сценария для javascript, который будут использовать все страницы, содержащие плагины, вспомогательные функции, функции форматирования и т. Д. И затем создать один отдельный файл js для всего, что относится только к каждой странице.

Если выТем не менее вы хотите иметь только один файл js в браузере, вы можете воспользоваться одной из тех утилит, которые объединяют несколько файлов js в один.

0 голосов
/ 20 декабря 2011

Разделите его на отдельный файл .js, чтобы его можно было кэшировать. Затем обратитесь к обоим внешним файлам .js со своей страницы.

...