Da ich seit etwa einem Monat keine Antwort mehr gesehen habe, werde ich diese Frage nach bestem Wissen und Gewissen beantworten.
Rails 3.1 (derzeit Release Candidate 4) führt ein Ritzel , die alle Javascript in einem Rails-Projekt in eine Datei kompiliert. Es kommt sogar mit Tools zu minify und komprimieren Javascript, so dass es alle an den Client auf einmal geliefert wird.
Verwandt mit Sprockets ist die Rails 3.1 Asset-Pipeline. Wie ich verstehe, ist es eine Ordnerhierarchie/Abstraktion. Javascripts können in 3 Ordnern abgelegt werden:
/apps/assets/javscripts/
Spezifische Javascript-Dateien für die Anwendung, einschließlich application.js
. Diese sollte nur das Manifest der Javascript-Dateien enthalten, die Sie in Ihr Projekt aufnehmen wollen. Die rails new
Tool wird diese Datei generieren und jquery in das Manifest aufnehmen.
/lib/assets/javascripts/
Vom Entwickler geschriebene Javascript-Dateien, die eher für allgemeine Zwecke bestimmt sind. (Mein Eindruck ist, dass dies für Javascript-Bibliotheken sein würde, die Sie entwickeln, um sie in mehrere Anwendungen einzubinden)
/vendor/assets/javascripts/
Javascript-Dateien von Dritten (z. B. JQuery, Modernizr)
Alle Dateien in diesen Ordnern erscheinen auf dem Client innerhalb von /assets/
und abstrahiert die serverseitigen Dateipfade. Ich nehme an, dies soll dem Entwickler helfen, Javascript-Dateien zu organisieren.
Um meine eigene Frage zu beantworten
- Legen Sie Javascript-Funktionen in separate Dateien, gruppieren Sie sie logisch. Meine Testanwendung zeigte, dass Unterordner innerhalb von
.../assets/javascripts/
sind in Ordnung wenn und nur wenn wird der Pfad des Unterordners in das Manifest aufgenommen.
- D.h. Putting
//= subfolder/js_file
im Manifest wird funktionieren. setzen //= js_file
wird nicht, wenn js_file
ist innen .../javascripts/subfolder/
- DHH erwähnt in seinem Vortrag (unten verlinkt) eine "Regel der 13". Wenn die Anzahl der Javascripts in einem Ordner 13 übersteigt, wird er unübersichtlich und unhandlich. Dies wäre ein guter Zeitpunkt, um Javascript-Dateien in Unterordnern zu gruppieren.
- Verwenden Sie den in Rails 3.1 eingebauten Minifier und Kompressor (oder installieren Sie ein bevorzugtes Gem)
- Refactor javascript code from time to time. Funktionen verschieben nach
/lib/assets/javascripts/
im Laufe der Zeit. (Das Ziel ist es, schließlich zu erkennen, wenn Sie allgemeine Javascript-Funktionen im Gegensatz zu anwendungsspezifischen Funktionen schreiben wollen, und diesen Refactor-Schritt zu eliminieren)
Weitere Ressourcen
ein Blogbeitrag über alle Änderungen in Rails 3.1
DHH's Vortrag über Rails 3.1 Änderungen, 16. Mai 2011 (~1 Std.)