Самая большая проблема с встроенными скриптами в том, что они не могут быть кэшированы должным образом. Если все ваши скрипты хранятся в одном js-файле, который минимизирован (с помощью компилятора), то этот файл может быть кэширован браузером только один раз для всего сайта.
Это приводит к повышению производительности в долгосрочной перспективе, если ваш сайт имеет тенденцию быть занятым. Еще одним преимуществом наличия отдельного файла для ваших сценариев является то, что вы, как правило, не «повторяете себя» и не объявляете многократно используемые функции в максимально возможной степени. DOMContentReady не приводит к плохому пользовательскому опыту. По крайней мере, он предоставляет пользователю контент заранее, а не заставляет его ждать загрузки пользовательского интерфейса, что может в конечном итоге стать большим отключением для пользователя.
Также использование встроенных сценариев не гарантирует, что пользовательский интерфейс будет более отзывчивым, чем при использовании с DOMContentReady. Представьте себе сценарий, в котором вы используете встроенные сценарии для выполнения вызовов AJAX. Если у вас есть одна форма, чтобы отправить свой штраф. Имейте больше чем одну форму, и вы в конечном итоге будете повторять ваши вызовы ajax .. следовательно, повторять один и тот же скрипт каждый раз. В конце концов, это приводит к тому, что браузер кэширует больше кода javascript, чем было бы, если бы он был выделен в файле js, загруженном, когда готов DOM.
Еще один большой недостаток наличия встроенных сценариев заключается в том, что вам необходимо поддерживать две отдельные базы кода: одну для разработки и другую для производства. Вы должны убедиться, что обе базы кода синхронизированы. Разрабатываемая версия содержит не минимизированную версию вашего кода, а рабочая версия содержит минимизированную версию. Это большая головная боль в цикле разработки. Вы должны вручную заменить все ваши фрагменты кода, спрятанные в этих громоздких html-файлах, на минимизированную версию, а также в конце надеяться, что ни один код не сломается! Однако при ведении отдельного файла во время цикла разработки вам просто нужно заменить этот файл на скомпилированную уменьшенную версию в производственной кодовой базе.
Если вы используете YSlow, вы увидите, что:
Использование внешнего JavaScript и CSS
файлы обычно выдают более быстрые страницы
потому что файлы кэшируются
браузер. JavaScript и CSS, которые
встраивается в HTML документы
загружать каждый раз HTML-документ
запрашивается Это уменьшает количество
HTTP-запросов, но увеличивает
Размер документа HTML. С другой стороны,
если JavaScript и CSS находятся в
внешние файлы, кэшированные браузером,
размер документа HTML уменьшен
без увеличения количества HTTP
запросы.
Я могу ручаться за встроенные сценарии, если и только если код изменяется так часто, что наличие его в отдельном js-файле несущественно и в конечном итоге окажет такое же влияние, как и у этих встроенных сценариев. Тем не менее, эти скрипты не кэшируются браузером. Единственный способ, которым браузер может кэшировать сценарии, - это сохранить его во внешнем js-файле с etag .
Однако это никак не связано с закрытием JQuery против Google. Закрытие имеет свои преимущества. Однако библиотека закрытия затрудняет размещение всех ваших сценариев во внешних файлах (хотя это и не невозможно, просто затрудняет). Вы просто склонны использовать встроенные сценарии.