61 votes

Javascript Tag de la Meilleure Pratique dans une Application Rails

Dire que j'ai besoin d'appeler un fichier javascript dans l' <head> d'une ERb modèle. Mon instinct est normal:

<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>

dans mon application de mise en page. Le problème, bien sûr, devenir que ces fichiers javascript sont chargés dans chaque page de mon application, indépendamment de si oui ou non ils sont nécessaires pour la page en cours de visualisation.

Donc, ce que je me demande si il y a un bon moyen de chargement d'un script javascript dans le les en-têtes de, par exemple, tous les ERb modèles trouvés seulement dans un répertoire spécifique.

111voto

maurycy Points 1315

Je voudrais utiliser content_for.

Par exemple, préciser le lieu de l'insérer dans la présentation de l'application:

<head>
<title>Merry Christmas!</title>
<%= yield(:head) -%>
</head>

Et l'envoyer à partir d'une vue:

<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>

6voto

JasonOng Points 2229

Je me sens il n'y a rien de mal, y compris tous les ans par défaut, car ils peuvent alors être mis en cache sur le navigateur de l'utilisateur.

3voto

Jitu Points 328

Je suggère de ne pas ajouter du code javascript dans le header, car il provoque de chargement de la page plus lent. Plutôt charger le js en bas de la page, ce qui est plus rapide. http://developer.yahoo.com/performance/rules.html#js_bottom

<body>
 ....
  <%= yield(:js) -%>
</body>

Et l'envoyer à partir d'une vue:

<%- content_for(:js) do -%>
  <%= javascript_include_tag :defaults -%>
<%- end -%>

1voto

Gareth Points 42402

J'ai habituellement les suivantes dans le fichier de layout:

<head>
  <%= javascript_include_tag :defaults %> <!-- For example -->
  <%= @extra_head_content %>
</head>

Et puis dans la vue:

<% (@extra_head_content ||= "") += capture do %>
  <%= other_content %>
<% end %>

Voir la documentation de l'API pour #capture

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X