Подключение js-файлов нужно для выполнения в браузере скриптов, написанных на языке JavaScript.
Если в каком-либо шаблоне нужен скрипт, написанный на языке JavaScript, его можно вынести в отдельный js-файл, и дать файлу имя, совпадающее с именем шаблона. Сам файл нужно поместить в папку templates. Больше никаких настроек не требуются – файл будет подключаться автоматически.
Допустим, в шаблоне menu.tpl нужно применять скрипт выпадающего подменю. Создаем файл menu.js со скриптом, который будет подключаться автоматически при каждом выводе блока с шаблоном menu.tpl.
По аналогии с файлом !main.css, существует и файл !main.js. В этот файл можно собрать js-скрипты, необходимые для всех страниц.
Правда, такой файл на практике используется редко, так как обычно js-скрипты относятся к шаблонам.
В этот файл рекомендуется помещать уникальные скрипты, созданные именно для данного сайта. Скрипты же из сторонних файлов (например: jquery.js) собирать в файл !main.js не нужно — для этих целей применяйте подключение с помощью метода Blox::addToHead().
Все js-скрипты лучше записывать в js-файлы, как в файлы вида шаблон.js, так и в самостоятельные. Последние нужно подключать с помощью метода Blox::addToHead(). В обоих случаях система будет блокировать вторичное подключение одного и того же файла.
Метод Blox::addToHead() вместе с методом Blox::addToFoot() позволяют гибко управлять очередностью подключения файлов.
Все, что было сказано по поводу очередности подключения css-файлов относится и js-файлам.
Обычно между щелчком мыши по веб-странице и изменением на ней существует некоторая задержка по времени, необходимая, для того чтобы компьютер пользователя отправил запрос на веб-сервер, а затем получил готовую страницу. C помощью JavaScript можно мгновенно вносить изменения в веб-страницу, так как скрипты выполняются тут же на компьютере, а не на сервере. Скрипты могут быть внедрены как в саму страницу (шаблоны), так и записаны в отдельные файлы .js.
Чаще всего JavaScript используют для организации выпадающих меню, предварительной проверки данных форм, небольших интерактивных элементов страницы, разных "красивостей" типа эффекта падающего снега, шлейфа за указателем мыши и т.п.