2009-03-02 13 views
47

Come da 'JavaScript non invadente' consigli Voglio separare la mia logica JavaScript in
file separati. Tuttavia non so come organizzarli.File JavaScript per visualizzazione in Rails

Dovrei:

  1. Basta buttare tutte le applicazioni javascript in application.js di file e caricarlo con layout di pagina? Questo è un approccio semplice, ma finirò con un Gonfiato Application.js. Alcuni utenti potrebbero voler visitare solo un paio di pagine, ma questo intero file sarebbe precaricato che non è buono.
  2. Oppure devo creare un file javaScript separato per ogni vista e caricarlo in modo indipendente? Questo crea una serie di domande. Come collegare ciascun file js alla vista corrispondente?
    Grazie.

risposta

103

Carica il codice JavaScript principale in application.js ogni volta. Ora crea file per esigenze diverse. Creare un file form.js, un file myfancypart.js, ecc. Non caricarli nel layout application.html.erb. Caricarli dinamicamente quando ti serve:

application.html.erb:

<%= javascript_include_tag "application" %> 
<%= yield :javascript_includes %> 

parte superiore del vostro view.html.erb:

<% content_for :javascript_includes do %> 
    <%= javascript_include_tag "forms.js" %> 
<% end %> 

Tutto nel blocco content_for verrà caricato in rendimento: javascript_includes.

+9

Questo va bene per lo sviluppo, ma nella produzione che si desidera come alcune richieste HTTP come possibile. Caricamento di tutti i tuoi js in primo piano in una richiesta che viene memorizzata nella cache potrebbe portare a prestazioni migliori. – jonnii

+2

rails3 risolve i problemi relativi alla pipeline degli asset per la produzione. –

+2

Quindi, la risposta selezionata qui è conforme a questo modello di pipeline di asset di Rails 3? – MattSlay

12

Suggerisco di mettere tutto in un unico file, che è possibile quindi ridurre e gzip. Il client dovrà scaricarlo solo una volta, poiché verrà memorizzato nella cache di tutte le richieste successive.

Un'altra cosa che potrebbe interessarti è pignoni, un gestore di dipendenze javascript, che è possibile installare utilizzando gem. È possibile ottenere maggiori informazioni sui pignoni dal sito Web (http://getsprockets.org/) o dalla pagina github (http://wiki.github.com/sstephenson/sprockets). Rende la scrittura di grandi applicazioni javascript molto più gestibili.

+0

questo cambia con 3.1 –

2

si può usare Jammit per includere i file CSS e JavaScript

per ingrandire: http://documentcloud.github.com/jammit/

Usa:

passo 1:

Aggiungere JS-files a assets.yml (vedere il codice sottostante)

javascript:

footer: 

- app/javascripts/lib/*.js 
- app/javascripts/jquery-plugins/*.js 
- app/javascripts/custom/*.js 
- app/javascripts/application.js 

intestazione:

- app/javascripts/core/*.js 
- app/javascripts/head/*.js 

fase 2:

Aggiungere semplice codice nel layout dell'applicazione:

<%= include_javascripts :header %> 
<%= include_javascripts :footer %> 
5

Questo cambia con Rails 3.1 e la pipeline di asset !!!

I file separati sono i migliori come si indica. Le questioni su come fare riferimento a tutti loro e collegarle vanno via con le rotaie 3.1 che mira a compilarle tutte in singoli file per la produzione.

-1

forse si desidera utilizzare application_helper

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

def stylesheet(*files) 
    content_for(:head) { stylesheet_link_tag(*files) } 
end 
Problemi correlati