В то время, когда этот ответ был первоначально отправлен (2008), правило было просто: Весь сценарий должен быть внешним. И для обслуживания и для производительности.
(Почему производительность? Поскольку, если код является отдельным, он может легче кэшироваться браузерами.)
JavaScript не принадлежит HTML-кода и если он содержит специальные символы (такой как <
, >
) это даже создает проблемы.
В наше время веб-масштабируемость изменилась. Сокращение количества запросов стало допустимым соображением из-за задержки создания нескольких Запросов HTTP. Это делает ответ более сложным: в большинстве случаев наличие внешнего JavaScript все еще рекомендуется. Но для определенных случаев, особенно очень маленькие части кода, встраивая их в HTML сайта имеют смысл.
Во время ранней разработки прототипа сохраняют Ваш код встроенным в пользу быстрого повторения, но убеждаться сделать все это внешним к тому времени, когда Вы достигаете производства.
Я даже смел бы говорить, что, если Вы не можете поместить весь свой JavaScript внешне, затем у Вас есть плохой дизайн под Вашими руками, и необходимо осуществить рефакторинг данные и сценарии
В Вашем сценарии это походит на запись внешнего материала в одном файле, общем для, страницы были бы хороши для Вас. Я соглашаюсь со всем, сказал выше.
Другое скрытое преимущество внешних сценариев - то, что можно легко выполнить их через программу проверки синтаксиса как jslint. Это может сохранить Вас от большого количества душераздирающих, дефицитных, ошибок IE6.
Три соображения:
На точке хранения внешнего JavaScript:
ASP.NET 3.5SP1 недавно представленная функциональность для создания Составного ресурса сценария (объединяют набор js файлов в один). Другое преимущество для этого - когда сжатие веб-сервера будет включено, загружение одного немного большего файла будет иметь лучшую степень сжатия затем многими меньшими файлами (также меньше http наверху, распространение в прямом и обратном направлениях и т.д....). Я предполагаю, что это экономит на начальной загрузке страницы, затем кэширование браузера умирает, как упомянуто выше.
ASP.NET в стороне, этот скринкаст объясняет преимущества более подробно: http://www.asp.net/learn/3.5-SP1/video-296.aspx
Внешние сценарии также легче отладить Firebug использования. Мне нравится к Модульному тесту, которому помогают мой JavaScript и наличие всего этого внешнего. Я очень не хочу видеть JavaScript в коде PHP и HTML, он похож на большую путаницу мне.
Я смотрел бы на необходимый код и разделил бы его на как много отдельных файлов по мере необходимости. Каждый js файл только содержал бы один "логический набор" функций и т.д., например, одного файла для всех связанных с входом в систему функций.
Затем во время разработки сайта на каждой странице HTML Вы только включаете тех, которые необходимы. Когда Вы идете живые с Вашим сайтом, можно оптимизировать путем объединения каждого js файла, в котором страница нуждается в один файл.
я думаю характерное для одной страницы, короткий случай сценария является (только) защитимым случаем для встроенного сценария
Воплощение JavaScript является одним из правил работы Yahoo: http://developer.yahoo.com/performance/rules.html#external
В то время как твердое правило, что необходимо всегда воплощать сценарии, обычно будет хорошей ставкой, в некоторых случаях можно хотеть встроить некоторые сценарии и стили. Необходимо однако только встроить вещи, которые Вы знаете, улучшит производительность (потому что Вы измерили это).
Пригодность для обслуживания является определенно причиной сохранить их внешними, но если бы конфигурация является остротой (или в целом короче, чем HTTP наверху Вы добрались бы для того, чтобы сделать те файлы внешними), мудро производительностью лучше сохранить их встроенными. Всегда помните, что каждый Запрос HTTP генерирует немного служебные с точки зрения времени выполнения и трафика.
Естественно это все становится не важным момент, Ваш код является дольше, чем несколькими строками и не действительно характерен для одной единственной страницы. Момент Вы хотите смочь снова использовать тот код, сделайте его внешним. Если Вы не делаете, посмотрите на его размер и решите затем.