Come Jammit vista maniglia specifica JavaScript
-
29-09-2019 - |
Domanda
Sto cercando di adottare Jammit nella mia applicazione Rails.
Di fabbrica fornite nella documentazione afferra tutti i file js tra cui vista specifica javascript:
embed_assets: on
javascripts:
workspace:
- public/javascripts/vendor/jquery.js
- public/javascripts/lib/*.js
- public/javascripts/views/**/*.js
- app/views/workspace/*.jst
stylesheets:
common:
- public/stylesheets/reset.css
- public/stylesheets/widgets/*.css
workspace:
- public/stylesheets/pages/workspace.css
empty:
- public/stylesheets/pages/empty.css
Consideriamo un caso quando vista specifica javascript deve essere eseguito solo su certa visione:
$(function(){
alert("View specific message here!");
}
Come posso evitare tale effetto?
Saluti, Alexey Zakharov
Soluzione
La mia preferenza è quella di concludere che "vista-specific-javascript" in una funzione. E poi chiamare tale funzione a seconda della pagina che in realtà carica. In questo modo, tutti i tuoi JavaScript può essere memorizzato nella cache da browser come un singolo file, e si possono eseguire le porzioni di JS di cui avete bisogno.
Così mi piacerebbe aggiungere un tag <script>
al particolare modello html.erb
che chiama la visualizzazione-specifica funzione di caricamento della pagina.
La speranza che aiuta ...
Altri suggerimenti
Sto scavando questo fino al punto fuori un'alternativa al jashkenas approccio, che è quello di un comportamento collegamento solo per tag specifici.
$(function() {
$('#my-view-object').someBehaviour();
}
Quindi, qual è il trucco? La differenza principale è che il codice JS tende ad essere collegato a certi oggetti, non pagine. Nel caso in cui riorganizzare il vostro punto di vista, si vuole avere per cambiare le JS troppo. L'altro problema è che JS ha bisogno di essere in fondo alla pagina per spremere il massimo dal browser. Se si sta mettendo le voci di script nel vostro punto di vista, allora molto probabilmente finirà per essere tutto della pagina HTML markup e rallentando il rendering.
BR, - José