Nach meinem Verständnis wird Ihr gesamtes JavaScript in einer Datei zusammengeführt. Rails tut dies standardmäßig, wenn es //= require_tree .
am Ende Ihrer application.js
Manifestdatei hinzugefügt wird.
Das klingt nach einem echten Lebensretter, aber ich bin ein wenig besorgt über seitenspezifischen JavaScript-Code. Wird dieser Code auf jeder Seite ausgeführt? Das Letzte, was ich möchte, ist, dass alle meine Objekte für jede Seite instanziiert werden, wenn sie nur auf einer Seite benötigt werden.
Gibt es nicht auch Potenzial für Code, der ebenfalls zusammenstößt?
Oder setzen Sie ein kleines script
Tag am Ende der Seite, das nur eine Methode aufruft, die den Javascript-Code für die Seite ausführt?
Benötigen Sie dann nicht mehr require.js?
Vielen Dank
EDIT : Ich schätze alle Antworten ... und ich glaube nicht, dass sie wirklich auf das Problem kommen. Einige von ihnen handeln vom Styling und scheinen sich nicht darauf zu beziehen ... und andere erwähnen nur javascript_include_tag
... was ich weiß (offensichtlich ...), aber es scheint, dass der Weg von Rails 3.1 in die Zukunft darin besteht, alles zusammenzufassen Ihr JavaScript in 1 Datei, anstatt einzelnes JavaScript am Ende jeder Seite zu laden.
Die beste Lösung, die ich finden kann, besteht darin, bestimmte Funktionen in div
Tags mit id
s oder class
es zu verpacken . Im JavaScript-Code überprüfen Sie einfach, ob sich das id
oder class
auf der Seite befindet, und wenn dies der Fall ist, führen Sie den zugehörigen JavaScript-Code aus. Auf diese Weise wird der JavaScript-Code nicht ausgeführt, wenn sich das dynamische Element nicht auf der Seite befindet - obwohl er in der application.js
von Sprockets gepackten umfangreichen Datei enthalten ist.
Meine obige Lösung hat den Vorteil, dass ein Suchfeld, das auf 8 der 100 Seiten enthalten ist, nur auf diesen 8 Seiten ausgeführt wird. Sie müssen auch nicht den gleichen Code auf 8 Seiten der Site einfügen. Tatsächlich müssen Sie nie wieder irgendwo manuelle Skript-Tags auf Ihrer Website einfügen.
Ich denke, das ist die eigentliche Antwort auf meine Frage.
application.js
), und tatsächlich zeigt die von Ihnen angegebene Referenz, warum dies so ist: Herunterladen ist das langsamster Teil des JS-Ausführungsprozesses. Viele kleine Dateien können zwischengespeichert werden als eine große. Die Leute von Unholy Rails scheinen also nicht zu erkennen, dass ihre Empfehlungen nicht mit den Prinzipien übereinstimmen, an die sie sich halten wollen, und daher sollten ihre Empfehlungen nicht ernst genommen werden.