Насколько я понимаю, весь ваш javascript объединяется в 1 файл. Rails делает это по умолчанию, когда добавляет //= require_tree .
в конец файла манифеста application.js
.
Это похоже на реальную экономию жизни, но меня немного беспокоит код javascript, специфичный для страницы. Выполняется ли этот код на каждой странице? Последнее, что я хочу, - это создание всех объектов для каждой страницы, когда они нужны только на 1 странице.
Кроме того, не существует ли потенциал для кода, который тоже сталкивается?
Или вы помещаете небольшой тег script
в нижней части страницы, который просто вызывает метод, который выполняет код javascript для страницы?
Вам больше не нужно require.js?
Спасибо
EDIT: Я ценю все ответы... и я не думаю, что они действительно попадают в проблему. Некоторые из них касаются стиля и, похоже, не связаны друг с другом... и другие просто упоминают javascript_include_tag
..., которые, как я знаю, существуют (очевидно...), но казалось бы, что путь Rails 3.1 в будущем все ваши Javascript в 1 файл, а не загружать отдельные Javascript в нижней части каждой страницы.
Лучшее решение, которое я могу придумать, - обернуть некоторые функции в теги div
с помощью id
или class
es. В коде javascript вы просто проверяете, есть ли на странице id
или class
, и если это так, вы запускаете связанный с ним код javascript. Таким образом, если динамический элемент отсутствует на странице, код javascript не запускается - хотя он был включен в массивный файл application.js
, упакованный Sprockets.
Мое выше решение имеет то преимущество, что если окно поиска включено на 8 из 100 страниц, оно будет работать только на этих 8 страницах. Вам также не придется включать тот же код на 8 страницах сайта. Фактически, вам никогда не придется включать ручные теги script на ваш сайт где-либо еще раз.
Я думаю, что это фактический ответ на мой вопрос.