Per quanto ne so, tutto il tuo JavaScript viene unito in 1 file. Rails lo fa per impostazione predefinita quando si aggiunge //= require_tree .
alla fine del application.js
file manifest.
Sembra un vero salvavita, ma sono un po 'preoccupato per il codice JavaScript specifico della pagina. Questo codice viene eseguito su ogni pagina? L'ultima cosa che voglio è che tutti i miei oggetti vengano istanziati per ogni pagina quando sono necessari solo su 1 pagina.
Inoltre, non esiste un potenziale per il codice che si scontra anche?
Oppure metti un piccolo script
tag nella parte inferiore della pagina che chiama semplicemente un metodo che esegue il codice javascript per la pagina?
Allora non hai più bisogno di request.js?
Grazie
MODIFICARE : apprezzo tutte le risposte ... e non penso che stiano davvero affrontando il problema. Alcuni riguardano lo stile e non sembrano relazionarsi ... e altri menzionano solo javascript_include_tag
... che io conosco esiste (ovviamente ...) ma sembrerebbe che il modo di andare avanti di Rails 3.1 sia concludere tutto il tuo JavaScript in 1 file invece di caricare singoli JavaScript nella parte inferiore di ogni pagina.
La migliore soluzione che posso trovare è quella di racchiudere alcune funzionalità nei div
tag con id
S o class
es. Nel codice JavaScript, devi solo controllare se id
o class
è nella pagina e, se lo è, esegui il codice JavaScript ad esso associato. In questo modo se l'elemento dinamico non si trova sulla pagina, il codice JavaScript non viene eseguito, anche se è stato incluso nell'enorme application.js
file impacchettato da Sprockets.
La mia soluzione sopra ha il vantaggio che se una casella di ricerca è inclusa in 8 delle 100 pagine, verrà eseguita solo su quelle 8 pagine. Inoltre, non dovrai includere lo stesso codice in 8 pagine del sito. In effetti, non dovrai mai più includere tag manuali di script sul tuo sito.
Penso che questa sia la vera risposta alla mia domanda.
application.js
), e infatti il riferimento che hai fornito indica perché è così: il download è il parte più lenta del processo di esecuzione di JS. Molti piccoli file sono più memorizzabili nella cache di uno grande. La gente di Unholy Rails non sembra rendersi conto, quindi, che le loro raccomandazioni sono incompatibili con i principi a cui stanno cercando di aderire, e quindi le loro raccomandazioni non dovrebbero essere prese sul serio.