0

Ist es eine gute Vorgehensweise, unter Öffentlichen Ordnern befindliche Elemente zu verwenden? z.B. Ich habe viele Javascript unter public/mythirdparyjs Ordner und ich möchte diese Javascript-Dateien nur für bestimmte Seite verfügbar machen, was wird der beste Weg, dies zu tun?Rails Asset-Pipeline benötigen von öffentlichen Ordner?

Antwort

2

Drittanbieter-JS-Dateien sollten in Ihrem Lieferantenordner sein. Sobald Sie sie für die Produktion vorkompilieren, werden sie automatisch in Ihren öffentlichen Ordner verschoben. Um bestimmte Dateien auf bestimmten Seiten aufzurufen, müssen Sie die require_tree-Direktive entfernen und auch darauf achten, welche Dateien in Ihrer Asset-Datei application.js aufgerufen werden. Am Ende jeder Ansichtsseite (html.erb) können Sie den folgenden Code zu nur speziell für diese Seite js läuft:

<%= content_for :javascript do %> 
    <script type='text/javascript'> 
    YOUR FUNCTIONS HERE 
    </script> 
<% end %> 

dann in Ihrer Anwendung/Layout-Ansicht auf dem Boden vor dem schließenden Body-Tag Sie hinzufügen sollen:

<%= javascript_include_tag params[:controller] if Rails.application.assets_manifest.assets["#{params[:controller]}.js"] %> 
<%=yield :javascript %> 

Dies wird dann alle js auf einer Seite für Seite view-Basis ausgeführt und umfassen jegliche Aussagen erfordern für alle Dateien in den entsprechenden Controller js Asset-Datei.

UPDATE um einen Kommentar abzugeben: Wenn Sie ein Juwel installiert haben und dann bestimmte js Dateien benötigen, sollten diese aus Ihrem app/assets/javascripts Ordner in der Datei application.js benötigt werden (wenn Sie dieses Juwel wollen um in Ihrer Anwendung verwendbar zu sein) oder in der Controller-spezifischen js-Datei, wenn Sie diese Funktionalität nur auf einigen Seiten benötigen. Zum Beispiel wird der eckige Edelstein wahrscheinlich in der gesamten Anwendung verwendet, sodass Sie die // = require-Anweisung zur Datei application.js in Ihrem Ordner app/assets/javascripts hinzufügen. Wenn Sie einige js-Bibliotheken manuell herunterladen, sollten Sie sie in den Ordner vendor/javascripts einfügen, aber Sie benötigen sie immer noch in Ihren app/assets/javascripts-Ordnerdateien, wo immer sie benötigt werden.

+0

Können Sie bitte ein Beispiel für eine Verzeichnisstruktur angeben, die JavaScript von Drittanbietern enthält? Meinst du etw so: public/angular/angular.js, angular-messages.js etc.? (Nehmen wir an, wir verwenden angularjs gem nicht und enthalten .js-Dateien direkt). – Lev

Verwandte Themen