2012-09-28 2 views

Antwort

8

Auch die vorkompilierte application.js (gemäß der Assets-Pipeline) ist standardmäßig auf und im Kopf. Die Begründung ist, dass, selbst wenn die js vor dem Rest der Seite geladen wird, da die js immer gleich ist, wird es von der zweiten Anfrage an aus dem Cache geladen, so dass es keinen wirklichen Grund gibt, es am Ende der Seite zu bedienen Körper mehr.

+0

Dank, das ist gut genug für mich :) – stephenmurdoch

+0

es die Datei speichert, aber es müssen noch warten für die js zu laden (wenn die ganze seite geladen ist), nicht wahr? Würde ein "Async" -Attribut nicht die Vorteile bieten, die es bietet, ohne von Turbolinks neu geladen zu werden? – michelpm

+0

Mit den Rails-basierten Ressourcen auf der normalen Schiene haben Sie eine komprimierte, minimierte js, die normalerweise im Cache des Browsers gespeichert wird. Ladezeit (wie in "Lade den Code") ist sowieso ein Bruchteil der gesamten Download + Wartezeit + Ladezeit für js. In jedem Fall lädt TL einfach die ganze Seite im Hintergrund, nimmt dann die Elemente (Titel, Körper usw.) und tauscht sie in Ihre Seite statt der aktuellen. Es ist ein einfaches Verhalten, das zu höherer Geschwindigkeit führen kann oder auch nicht. In realen Beispielen fand ich Kettenräder Javascript in Kopf mehr als genug kompiliert. – rewritten

5

Wenn Sie Turbolinks 5 verwenden, können Sie nun Turbolinks am unteren Rand Ihres Körpers platzieren (und befolgen Sie die Best Practices für das Rendern einer Seite). Dies hilft auch bei SEO ganz leicht. Einfach Ihre Skripte auf der Unterseite des Körpers hinzufügen und

data-turbolinks-eval="false"

zu Ihrem Skript-Tag hinzuzufügen. Dies verhindert, dass Turbolinks nach die anfängliche Seitenlast auswerten. Hier ist, wie es mit dem javascript_include_tag getan wird:

<%= javascript_include_tag 'application', 'data-turbolinks-eval' => 'false'%>

Dann einfach

$(document).on('turbolinks:load', function() { // code to be executed when use changes pages }); verwenden

Verwandte Themen