Die Asset-Pipeline bietet ein Framework zum Verketten und Minimieren oder Komprimieren von JavaScript- und CSS-Assets. Es bietet außerdem die Möglichkeit, diese Assets in anderen Sprachen wie CoffeeScript, Sass und ERB zu schreiben. In Rails 3.1 ist die Rails-Asset-Pipeline standardmäßig aktiviert. Es kann in config/application.rb deaktiviert werden, indem diese Zeile in die Anwendungsklassendefinition eingefügt wird:
config.assets.enabled = false
Wir können die Asset-Pipeline auch deaktivieren, während wir eine neue Anwendung erstellen, indem wir die Option „skip-sprockets“ übergeben.
Schienen neuer App-Name –skip-sprockets
Merkmale der Asset-Pipeline:
1.Verknüpfen Sie Vermögenswerte
Diese Funktion ist in einer Produktionsumgebung wichtig, da sie die Anzahl der Anfragen reduzieren kann, die ein Browser zum Rendern einer Webseite stellen muss. Die Anzahl der Anfragen, die Webbrowser gleichzeitig stellen können, ist begrenzt. Daher können weniger Anfragen ein schnelleres Laden der Anwendung bedeuten.
Schienen Mit 2.x wurde die Möglichkeit eingeführt, JavaScript- und CSS-Assets zu verketten, indem :cache => true am Ende der Methoden javascript_include_tag und stylesheet_link_tag platziert wird. Diese Technik weist jedoch einige Einschränkungen auf. Beispielsweise können die Caches nicht im Voraus generiert werden, und es ist nicht in der Lage, von Bibliotheken Dritter bereitgestellte Assets transparent einzubeziehen.
2.Asset-Minimierung oder -Komprimierung
Bei CSS-Dateien erfolgt die Komprimierung durch Entfernen von Leerzeichen und Kommentaren. Für JavaScript können komplexere Prozesse angewendet werden. Wir können aus einer Reihe integrierter Optionen wählen oder unsere eigenen angeben.
3. Es ermöglicht die Codierung von Assets über eine höhere Sprache mit Vorkompilierung bis hin zu den eigentlichen Assets. Zu den unterstützten Sprachen gehören standardmäßig Sass für CSS, CoffeeScript für JavaScript und ERB für beide. In älteren Versionen der Rails-Asset-Pipeline befinden sich alle Assets in öffentlichen Unterverzeichnissen wie Bildern, Javascripts und Stylesheets.
Mit der Asset-Pipeline ist der bevorzugte Speicherort für diese Assets nun das Verzeichnis app/assets. Dateien in diesem Verzeichnis werden von der Sprockets-Middleware bereitgestellt, die im Sprockets-Gem enthalten ist. Vermögenswerte können weiterhin in der öffentlichen Hierarchie platziert werden. Alle öffentlich zugänglichen Assets werden von der Anwendung oder dem Webserver als statische Dateien bereitgestellt. Wir sollten app/assets für Dateien verwenden, die einer Vorverarbeitung unterzogen werden müssen, bevor sie bereitgestellt werden.
In der Produktion kompiliert Rails diese Dateien standardmäßig in public/assets vor. Die vorkompilierten Kopien werden dann vom Webserver als statische Assets bereitgestellt. Die Dateien in app/assets werden niemals direkt in der Produktion bereitgestellt.
Wenn wir ein Gerüst oder einen Controller generieren, generiert Rails auch eine JavaScript-Datei (oder eine CoffeeScript-Datei, wenn sich das Coffee-Rails-Gem in der Gem-Datei befindet) und eine Cascading Style Sheet-Datei (oder eine SCSS-Datei, wenn sich Sass-Rails in der Gem-Datei befindet) für dieser Controller.
Vermögensorganisation:
Der größte praktische Unterschied zwischen Rails 3.0- und Rails 3.1-Apps besteht in der Änderung des Speicherorts von Asset-Dateien wie Bildern, Stylesheets und JavaScript-Dateien. In früheren Versionen der Rails-Asset-Pipeline befanden sich diese Dateien alle im Verzeichnis public/:
öffentlich/bilder/
public/stylesheets/
public/javascripts/
In Rails 3.1 und Rails 3.2.3 unterscheidet sich der Speicherort dieser Dateien je nachdem, ob sie von uns erstellt wurden oder von einem externen Anbieter stammen. In diesem Fall befinden sich die Dateien im Verzeichnis app/assets:
app/assets/images/
app/assets/stylesheets/
app/assets/javascripts/
Im Falle von Code oder Bildern von externen Anbietern verwenden wir das Vendor/Assets-Verzeichnis:
Anbieter/Assets/Bilder/
Vendor/Assets/Stylesheets/
Vendor/assets/javascripts/
Manifestdateien
Dabei handelt es sich um einfache JS- oder CSS-Dateien, die Direktivenprozessoren und Kommentarzeilen gefolgt von einem = enthalten
// …
//= Jquery erforderlich
//= erfordern jquery_ujs
//= require_tree .
Oder:
/* …
*= require_self
*= require_tree .
Diese Manifestdateien verweisen auf andere Assets, von denen sie abhängen, und enthalten diese. Mit require_directory und require_tree können wir ganze Verzeichnisse und ihre untergeordneten Verzeichnisse anfordern. require_self schließt auch alle JS- oder CSS-Dateien in die Manifestdatei selbst ein.
Nehmen Sie Kontakt mit uns auf.