Frage

Ich versuche Jammit in meiner Rails-Anwendung zu übernehmen.

Standard config in Dokumentation packt alle js Dateien einschließlich Ansicht spezifischen javascript:

embed_assets: on

javascripts:
  workspace:
    - public/javascripts/vendor/jquery.js
    - public/javascripts/lib/*.js
    - public/javascripts/views/**/*.js
    - app/views/workspace/*.jst

stylesheets:
  common:
    - public/stylesheets/reset.css
    - public/stylesheets/widgets/*.css
  workspace:
    - public/stylesheets/pages/workspace.css
  empty:
    - public/stylesheets/pages/empty.css

betrachten wir einen Fall, bei Ansicht spezifische Javascript nur auf bestimmten Ansicht ausgeführt werden sollte:

$(function(){
  alert("View specific message here!");
}

Wie kann ich einen solchen Effekt vermeiden?

Viele Grüße, Alexey Zakharov

War es hilfreich?

Lösung

Meine Präferenz ist in einer Funktion, das „ansichtsspezifische-javascript“ einpacken. Und dann rufen Sie diese Funktion auf der Seite ab, die Sie tatsächlich laden. Auf diese Weise können alle Ihre JavaScripts von Browsern als eine einzige Datei zwischengespeichert werden, und Sie können die Teile des JS ausführen, die Sie benötigen.

Also habe ich ein <script> Tag an die jeweilige html.erb Vorlage hinzufügen würde, die Ihre Anrufe ansichtsspezifische Funktion beim Laden der Seite.

Ich hoffe, das hilft ...

Andere Tipps

Ich bin dies jashkenas aus Alternative zu Punkt Grabe Ansatz, der auf Link-Verhalten ist nur zu bestimmten Tags.

$(function() {
  $('#my-view-object').someBehaviour();
}

Also, was ist der Haken? Der wesentliche Unterschied besteht darin, dass JS-Code neigt dazu, bestimmte Objekte verknüpft werden, nicht Seiten. Für den Fall, reorganisieren Sie Ihre Ansichten, werden Sie Ihre JS zu haben, um zu ändern. Das andere Problem ist, dass JS am unteren Rand der Seite sein, muss das Beste aus dem Browser quetschen. Wenn Sie Skripteinträge in Ihren Ansichten setzen, dann ist es sehr wahrscheinlich, dass sie überall auf der HTML-Markup und verlangsamt die Wiedergabe Seite enden.

BR, - José

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top