31 votes

guide les meilleures pratiques pour placer du javascript discret

mes applications rails (tous les 2.3.5) l'utilisation d'un mélange total de javascript en ligne, rjs, prototype et jquery. Appelons ça de l'apprentissage ou de douleurs de croissance. Dernièrement, j'ai été de plus en plus épris de javascript discret. Il rend votre code html propre, de la même manière css nettoyé.

Mais la plupart des exemples que j'ai vu sont de petits exemples, et ils ont mis tous les javascript(jquery) à l'intérieur de application.js

Maintenant, j'ai une assez grosse application, et je pense à des façons de structurer mon js. J'aime en quelque sorte que mon script est toujours à proximité de la vue, de sorte que je pense à quelque chose comme

orders.html.erb
orders.js

où orders.js contient du javascript discret spécifiques à ce point de vue. Mais peut-être que c'est juste moi qui suis trop conservateur :)

J'ai lu quelques posts par Yehuda Katz a propos de ce problème ici et ici, où il s'attaque à ce problème. Il faudra passer par votre js-fichiers et charger uniquement de celles qui sont pertinentes à votre vue. Mais, hélas, je ne peux pas trouver une mise en œuvre.

Donc mes questions:

  • comment pensez-vous est la meilleure structure de votre javascript discret; gérer votre code, comment vous assurez-vous qu'il est évident à partir de l'html que quelque chose est censé faire. Je suppose que bien des noms de classe aller un long chemin :)
  • comment voulez-vous organiser vos fichiers, de les charger dans? juste un peu? utilisez-vous content_for :script ou javascript_include_tag de votre point de vue à la charge de l'pertinentes scripts. Ou ... ?
  • écrivez-vous très des fonctions génériques (comme une suppression), avec des paramètres (ajouter des attributs supplémentaires?), ou avez-vous écrire des fonctions très spécifiques (SEC?). Je sais que dans Rails 3, il existe un ensemble standard, et tout est discrète il. Mais comment faire pour démarrer dans les Rails 2.3.5?

En bref: quelles sont les meilleures pratiques pour faire du javascript discret dans les rails? :)

10voto

Sam Saffron Points 56236

Je ne pense pas qu'il y est une bonne pratique, mais je vais vous laisser savoir ce que je fais.

  1. J'ai une série de fichiers js, chacun pour leur propre but dans l' public/javascripts/ répertoire. Quelques exemples pourraient être utility.js chat.js shopping_basket.js et ainsi de suite.

  2. J'utilise de l'actif de l'emballeur et de définir une grosse collection pour tous les mon générales d'utilisation de la fonctionnalité et l'autre pour les admin seule fonctionnalité. Les aller-retour vers le serveur coûtent trop cher. En gros, j'ai inclure tous les js dans sur la première page de chargement compacte dans un blob (en général)

  3. Je me permet d' $(document).ready crochets en ligne dans les pages, et de les garder vraiment court.

  4. Les données que mes fichiers js besoins d'accès est rendu en ligne avec la page. (Généralement dans les DOM, parfois vars - Eg. var xyz = 100)

  5. En général, je vais développer mon contrôleurs avec javascript désactivé (et assurez-vous que tout cela fonctionne), puis je l'allume et saupoudrer d'un peu d' if request.xhr? en cas de besoin.


Gardez à l'esprit, Rail 3.1 présente un intégré les meilleures pratiques, voir: http://guides.rubyonrails.org/asset_pipeline.html - sur une note personnelle, j'ai eu des performances et des problèmes de configuration avec le nouveau gazoduc, cependant, beaucoup d'autres ont eu beaucoup de succès avec elle.

3voto

Toby Hede Points 22128

J'ai récemment documenté comment je gérais le javascript dans Ruby on Rails . Je décompose essentiellement les choses en de nombreux petits fichiers granulaires, chacun avec un espace de noms approprié, puis je les fusionne tous en un seul fichier pour la production à l'aide de asset_packager.

1voto

jxpx777 Points 2666

J'ai trouvé ce post en essayant de résoudre le même problème, mais aucune des solutions existantes qui m'a frappé comme la bonne. J'ai écrit mon approche ici. J'adore les Rails " convention over configuration, donc je voulais la même approche, y compris des Javascripts qui ne sont applicables qu'à une action particulière de la page. Si rien d'autre, c'est au moins une autre approche de l'ajouter à vos options.

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