2012-01-10 2 views
0

На данный момент мой файл application.js выглядит следующим образом:трубопровода активов Javascript структура файлов

//= require_tree ./vendor 
//= require_directory ./lib 

У меня также есть отдельные файлы JavaScript для отдельных представлений, например, home.js, user.js и т. д.

Неужели люди помещают эти файлы в application.js? Если да, то как они активируют их? Большая часть моего JavaScript выполняется из обработчика события jQuery ready $(function(){ });

Очевидно, что это не работает, если все они находятся в одном файле. Как я могу минимизировать эти файлы и получить доступ к правильному событию, если все они находятся в одном файле?

Любая помощь или советы были высоко оценены.

ответ

0

Это хорошо, если у вас есть несколько обработчиков документов jQuery, поскольку вам не нужно заботиться о порядке между ними. Однако вам нужно проверить, что элементы, над которыми они работают, существуют, прежде чем пытаться подключить какие-либо обработчики.

Например, в home.js, вы можете иметь что-то вроде

if ($("#home_div").length) { // do some stuff on the home page } 

Делать это лучше, чем разделив ваши JS и обслуживали только несколько штук, на некоторых страницах, так как с собранным подходом только пользователям необходимо загрузить JS один раз. Я думаю, что по умолчанию rails 3.1 config должен минимизировать и объединить все ваши JS в процессе производства, но не в dev. Если вы хотите включить его вручную,

config.assets.compress = true # compress js into one file 
config.assets.js_compressor = :uglifier # minify the JS (need the uglifier gem) 
config.assets.digest = true # append hashes to filenames so you can set far-expiry headers for caching 

еще информация, проверить «настройки участка трубопровода» из документации http://guides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline

и этот родственный вопрос

How to properly work with jQuery in Rails 3.1 asset pipeline?

Смежные вопросы