Уолтер Рамсби дал отличный ответ на Где разместить JavaScript в HTML-файле . Он ссылается на работу, проделанную командой Yahoo Exceptional Performance, и их рекомендацию разместить сценарии внизу страницы . Это жесткое и быстрое правило, которому я давно следую. В той же ветке Леви Розоль указал, что «лучшее место для него [JavaScript] - это как раз перед тем, как оно понадобится вам, не раньше». Это то положение, в котором я сейчас нахожусь.
Я добавил свою ссылку на jQuery в конце своей страницы, но столкнулся с проблемой того, как структурировать пользовательский элемент управления, к которому я хотел бы добавить функциональность на стороне клиента. В частности, мне трудно найти лучший способ учета зависимостей. В пользовательском элементе управления есть тег span, содержащий числовое значение, которое я хотел бы обновить в зависимости от количества флажков, которые пользователь установил в пользовательском элементе управления. Я использую jQuery, чтобы найти тег span и обновить его текстовое свойство.
К сожалению, если моя ссылка на jQuery не появится до пользовательского элемента управления, я получу ошибки JavaScript. Это имеет смысл, поскольку элемент управления ссылается на функции, которые еще не были добавлены. Я могу придумать несколько вариантов решения этой проблемы, но я ищу вариант наилучшей практики.
- Размещение ссылки на библиотеку jQuery внутри пользовательского элемента управления.
- Недостаток: если пользовательский элемент управления помещен в ретранслятор, будут сделаны многочисленные ссылки на библиотеку jQuery.
- Не включайте JavaScript в пользовательском элементе управления и пишите весь код, чтобы обновить тег span для пользовательского элемента управления на содержащей странице.
- Недостаток: я получу один и тот же код в нескольких местах, создав потенциальный кошмар обслуживания.
- Поместите ссылку jQuery в раздел заголовка страницы.
- Недостаток: я нарушил рекомендацию разместить скрипты внизу страницы и создал непригодный пользовательский элемент управления, если на странице нет ссылки на jQuery.
Это варианты и недостатки, которые я придумал, когда думал о решении этой проблемы. Я, безусловно, открыт для предложений о лучших решениях, и никто не ищет рекомендации, какую из трех я должен выбрать.