Когда я должен использовать встроенный или внешний Javascript?

125
задан GEOCHET 26 September 2008 в 11:31
поделиться

11 ответов

В то время, когда этот ответ был первоначально отправлен (2008), правило было просто: Весь сценарий должен быть внешним. И для обслуживания и для производительности.

(Почему производительность? Поскольку, если код является отдельным, он может легче кэшироваться браузерами.)

JavaScript не принадлежит HTML-кода и если он содержит специальные символы (такой как <, >) это даже создает проблемы.

В наше время веб-масштабируемость изменилась. Сокращение количества запросов стало допустимым соображением из-за задержки создания нескольких Запросов HTTP. Это делает ответ более сложным: в большинстве случаев наличие внешнего JavaScript все еще рекомендуется. Но для определенных случаев, особенно очень маленькие части кода, встраивая их в HTML сайта имеют смысл.

112
ответ дан 24 November 2019 в 01:00
поделиться

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

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

1
ответ дан 24 November 2019 в 01:00
поделиться

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

1
ответ дан 24 November 2019 в 01:00
поделиться

Другое скрытое преимущество внешних сценариев - то, что можно легко выполнить их через программу проверки синтаксиса как jslint. Это может сохранить Вас от большого количества душераздирающих, дефицитных, ошибок IE6.

2
ответ дан 24 November 2019 в 01:00
поделиться

Три соображения:

  • В каком количестве кода Вы нуждаетесь (иногда, библиотеки являются первоклассным потребителем)?
  • Специфика: действительно ли этот код только функционален в контексте этого определенного документа или элемента?
  • Каждый код в документе имеет тенденцию делать его дольше и таким образом медленнее. Помимо той SEO соображения делают это очевидным, что Вы минимизируете внутренние сценарии...
3
ответ дан 24 November 2019 в 01:00
поделиться

На точке хранения внешнего JavaScript:

ASP.NET 3.5SP1 недавно представленная функциональность для создания Составного ресурса сценария (объединяют набор js файлов в один). Другое преимущество для этого - когда сжатие веб-сервера будет включено, загружение одного немного большего файла будет иметь лучшую степень сжатия затем многими меньшими файлами (также меньше http наверху, распространение в прямом и обратном направлениях и т.д....). Я предполагаю, что это экономит на начальной загрузке страницы, затем кэширование браузера умирает, как упомянуто выше.

ASP.NET в стороне, этот скринкаст объясняет преимущества более подробно: http://www.asp.net/learn/3.5-SP1/video-296.aspx

2
ответ дан 24 November 2019 в 01:00
поделиться

Внешние сценарии также легче отладить Firebug использования. Мне нравится к Модульному тесту, которому помогают мой JavaScript и наличие всего этого внешнего. Я очень не хочу видеть JavaScript в коде PHP и HTML, он похож на большую путаницу мне.

2
ответ дан 24 November 2019 в 01:00
поделиться

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

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

4
ответ дан 24 November 2019 в 01:00
поделиться

я думаю характерное для одной страницы, короткий случай сценария является (только) защитимым случаем для встроенного сценария

14
ответ дан 24 November 2019 в 01:00
поделиться

Воплощение JavaScript является одним из правил работы Yahoo: http://developer.yahoo.com/performance/rules.html#external

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

21
ответ дан 24 November 2019 в 01:00
поделиться

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

Естественно это все становится не важным момент, Ваш код является дольше, чем несколькими строками и не действительно характерен для одной единственной страницы. Момент Вы хотите смочь снова использовать тот код, сделайте его внешним. Если Вы не делаете, посмотрите на его размер и решите затем.

31
ответ дан 24 November 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: