Fichier JavaScript par vue dans Rails

Selon les recommandations «JavaScript discrète», je souhaite séparer ma logique JavaScript en
Fichiers séparés. Cependant, je ne sais pas comment les organiser.

Devrais-je:

  1. Il suffit de jeter tous les javascript d'application dans le fichier Application.js et de le charger avec la page de mise en page? C'est une approche simple, mais je finirai par une Application.js gonflée. Certains utilisateurs pourraient vouloir visiter seulement quelques pages, mais tout ce fichier serait préchargé, ce qui n'est pas bon.
  2. Ou dois-je créer un fichier javaScript distinct pour chaque vue et les charger indépendamment? Cela crée un ensemble de questions. Comment lier chaque fichier js à la vue correspondante?
    Merci.

Chargez le JavaScript principal dans application.js à chaque fois. Créez maintenant des fichiers pour différents besoins. Créez un fichier form.js, un fichier myfancypart.js etc. Ne les chargez pas dans la mise en page application.html.erb. Chargez-les dynamiquement lorsque vous en avez besoin:

Application.html.erb:

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

En haut de votre view.html.erb:

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

Tout dans le bloc content_for sera chargé au rendement: javascript_includes.

Je suggère de mettre tout dans un fichier, que vous pouvez ensuite minify et gzip. Le client devra uniquement le télécharger une fois, puisqu'il sera mis en cache sur toutes les demandes ultérieures.

Une autre chose qui pourrait vous intéresser est les pignons, un gestionnaire de dépendance javascript, que vous pouvez installer en utilisant gem. Vous pouvez obtenir plus d'informations sur les pignons du site Web ( http://getsprockets.org/ ) ou de la page github ( http://wiki.github.com/sstephenson/sprockets ). Il rend l'écriture de grandes applications javascript beaucoup plus gérable.

Cela change avec Rails 3.1 et le pipeline d'actifs !!!

Les fichiers séparés sont les meilleurs comme vous l'indiquez. Les problèmes sur la façon de les référencer tous et de les relier disparaissent avec les rails 3.1 qui visent à les compiler tous en fichiers uniques pour la production.

On peut utiliser Jammit pour inclure les fichiers css et javascripts

Pour plus de détails: http://documentcloud.github.com/jammit/

Utilisation:

étape 1:

Ajouter js-files dans assets.yml (voir code ci-dessous)

Javascripts:

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

entête:

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

étape 2:

Ajouter un code simple dans la mise en page de l'application:

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

Peut-être que vous voulez utiliser application_helper

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