Вот мои "рекомендации". Обратите внимание, что ни один из них не является формальным, они просто кажутся правильными.
Весь общий JS-код находится в каталоге SITE/javascripts
, но загружается в «ярусы»
Для материалов всего сайта (таких как jquery или мой application.js для всего сайта) макет всего сайта (это будет главная страница в ASP.net) включает файл. Теги script
идут вверху страницы.
Существует также материал для всего региона (например, код js, который необходим только в разделе администратора сайта). Эти области либо имеют общий макет (который затем может включать теги сценария), либо будут отображать общий фрагмент, и этот фрагмент может включать теги сценария)
Для менее распространенного материала (скажем, моей библиотеки, которая нужна только в нескольких местах), я помещаю тег script
на эти HTML-страницы индивидуально. Теги скрипта идут вверху страницы.
Для вещей, которые относятся только к одной странице, я просто пишу встроенный JavaScript. Я стараюсь держать его как можно ближе к цели. Например, если у меня есть кнопка js для кнопки, тег script
будет располагаться под кнопкой.
Для встроенного JS, у которого нет цели (например: onload
события), он идет внизу страницы.
Итак, как что-то попадает в локализованную библиотеку или библиотеку всего сайта?.
- В первый раз, когда вам это нужно, напишите это в строке
- В следующий раз, когда вам это понадобится, перетащите встроенный код в локализованную библиотеку
- Если вы ссылаетесь на некоторый код в локализованной библиотеке из (приблизительно) 3 или более мест, перетащите код в библиотеку всего региона
- Если это необходимо из более чем одного региона, перенесите его в общесистемную библиотеку.
Распространенная жалоба на систему, подобную этой, состоит в том, что вы получаете 10 или 20 маленьких файлов JS, где 2 или 3 больших файла JS будут работать лучше с сетевой точки зрения.
Однако и rails, и ASP.NET имеют функции, которые обрабатывают объединение и кэширование нескольких файлов JS в один или несколько файлов 'super' js для рабочих ситуаций.
Я бы рекомендовал использовать подобные функции, а не ставить под угрозу качество / удобочитаемость реального исходного кода.