Question

Je suis en train d'adopter Jammit dans mon application Rails.

config par défaut fourni dans la documentation saisit tous les fichiers js y compris javascript spécifique de la vue:

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

Considérons un cas où le javascript spécifique de vue doit être exécutée que sur certain point de vue:

$(function(){
  alert("View specific message here!");
}

Comment puis-je éviter un tel effet?

Cordialement, Alexey Zakharov

Était-ce utile?

La solution

Ma préférence est de conclure que « spécifique à la vue-javascript » dans une fonction. Et puis appeler cette fonction en fonction de la page que vous chargez réellement. De cette façon, tous vos JavaScripts peuvent être mises en cache par les navigateurs comme un seul fichier, et vous pouvez exécuter les parties de la JS que vous avez besoin.

Je voudrais ajouter une balise de <script> au modèle de html.erb particulier qui appelle votre fonction spécifique à la vue de la charge de la page.

L'espoir qui aide ...

Autres conseils

Je creuse dans ce jusqu'à signaler une alternative à jashkenas approche, qui est à un comportement de lien juste pour les balises spécifiques.

$(function() {
  $('#my-view-object').someBehaviour();
}

Alors, quel est le piège? La principale différence est que le code JS tend à être lié à certains objets, pas de pages. Si vous réorganiser votre point de vue, vous devrez avoir à changer vos JS aussi. L'autre problème est que JS doit être au bas de la page pour tirer le maximum hors du navigateur. Si vous mettez les entrées de script dans votre point de vue, il est fort probable qu'ils finiront par être partout dans HTML de la page balises et de ralentir le rendu.

BR, - José

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top