Для текущей страницы требуется только запуск JavaScript, лучшие методы? - PullRequest
4 голосов
/ 24 мая 2011

Так что я знаю, что лучше всего иметь один файл javascript для всего сайта, чтобы ограничить число запросов http.Очевидно, что для некоторых страниц требуется только некоторый JavaScript. Каков наилучший способ запуска только javascript, необходимого для текущей страницы?

EG.

if(page=='home'){
  //run javascript require for the home page
}

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

Ответы [ 3 ]

5 голосов
/ 24 мая 2011

Инкапсулируйте вашу логику в функции.Затем просто вызовите нужные функции на каждой странице с помощью "onload" или вызова встроенной функции на странице:

<script type="text/javascript">
   yourFunctionForThisPage();
</script>

Редактирование: Просто чтобы уточнить: мойОтвет предполагает (подразумеваемое) ограничение одного файла .js.Как отмечали другие, хотя вы экономите на HTTP-запросах, это не обязательно хорошая идея: браузер все равно должен анализировать все код в файле для каждой страницы, независимо от того, используется она или нет.Честно говоря, довольно необычно иметь глобальный js-ресурс для всего сайта со всем этим.Вероятно, это гораздо лучшая идея логически разделить ваши файлы js на различные файлы, то есть библиотеки.Эти библиотеки могут быть основаны на страницах - то есть конкретный код для конкретной страницы, или на основе алгоритма / задачи, которые вы можете включить в те страницы, которые в них нуждаются.

3 голосов
/ 24 мая 2011

Возможно ли это?

Хотя лучше всего иметь только один файл Javascript на страницу , чтобы уменьшить количество запросов, но это может оказаться невозможным.Особенно то, как вы хотели бы это сделать.

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

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

Другие возможности

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

Что вы получаете?

  • каждая страница имеет только те сценарии, которые ей нужны
  • отдельные файлы сценариев имеют меньший размер, поэтому их проще поддерживать
  • размер сценария на запрос невелик
  • синтаксический анализ браузера и низкое потребление ресурсов
0 голосов
/ 24 мая 2011

Знайте, что вам нужно на странице, и используйте загрузчик сценариев, например labjs .

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

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