web-dev-qa-db-fra.com

Fichier JavaScript par vue en Rails

Selon les recommandations "discrètes JavaScript", je veux séparer ma logique JavaScript en
fichiers séparés. Mais je ne sais pas comment les organiser.

Devrais-je:

  1. Il suffit de jeter tout le javascript de l'application dans le fichier Application.js et de le charger avec la page de mise en page? C'est une approche simple mais je vais me retrouver avec un Application.js gonflé. Certains utilisateurs peuvent vouloir visiter seulement quelques pages, mais ce fichier entier 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.
54
Valentin

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 disposition application.html.erb. Chargez-les dynamiquement lorsque vous en avez besoin:

application.html.erb:

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

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.

111
Lennart Koopmann

Je suggère de tout mettre dans un seul fichier, que vous pouvez ensuite réduire et gzip. Le client n'aura à le télécharger qu'une seule fois, car il sera mis en cache sur toutes les demandes suivantes.

Une autre chose qui pourrait vous intéresser est sprockets, un gestionnaire de dépendances javascript, que vous pouvez installer à l'aide de gem. Vous pouvez obtenir plus d'informations sur les pignons sur le site Web ( http://getsprockets.org/ ) ou sur la page github ( https://github.com/Rails/sprockets =). Cela rend l'écriture de grandes applications javascript beaucoup plus facile à gérer.

12
jonnii

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

Les fichiers séparés sont les meilleurs que vous indiquez. Les problèmes sur la façon de tous les référencer et les lier disparaissent avec Rails 3.1 qui vise à les compiler tous dans des fichiers uniques pour la production.

5
Michael Durrant

On peut utiliser Jammit pour inclure des fichiers css et javascripts

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

Utilisation:

étape 1:

Ajoutez des fichiers js dans assets.yml (voir le 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:

Ajoutez un code simple dans la présentation de l'application:

<%= include_javascripts :header %>
<%= include_javascripts :footer %>
2
Omer Aslam