ilch Forum » Ilch CMS 2.X » Allgemein » Asset Manager oder CSS / JS-Register

Geschlossen
  1. #1
    User Pic
    BadRandolph Mitglied
    Registriert seit
    31.05.2006
    Beiträge
    26
    Beitragswertungen
    8 Beitragspunkte
    Hallo zusammen,

    ich bin gerade u.a. dabei ein Layout für Ilch 2 zu entwickeln. Dabei stolpere ich immer wieder über die ungeordnete Reihenfolge der Layout vs. Modul-CSS-Dateien, die oft die Verwendung von !important erforderlich macht.

    Ich meine mich erinnern zu können in einem anderen Thread gelesen zu haben, dass es mal Bestrebungen nach einem Asset Manager oder zumindest einer CSS / JS-Registry gab. Nun ist meine 2.0 Installation nicht auf dem neuesten Stand, hat sich da nochmal was getan? Sonst würde ich mich da mal dranmachen, eine einfache Registry sollte keine große Sache sein und würde Layoutern das leben bestimmt erleichtern und den Code sauberer halten.

    Eleganter wäre es natürlich mit Abhängigkeiten/Bundles und Deployment/Publish (damit könnte man auch das Modul-Verzeichnis "zumachen" da es dann einen Weg gäbe alle statischen Dateien wie CSS, JS, Images... automatisch in ein öffentliches Verzeichnis zu legen), das würde aber wahrscheinlich zu stark in bestehende Strukturen eingreifen? Alle Module müssten wahrscheinlich auf dessen Verwendung umgestellt werden sofern es durchgezogen werden soll lächeln

    Edit:

    Beispiel:

    1. Ilch selbst definiert ein Core-Frontend-Asset Bundle, das z.B. Fontawesome, Jquery usw. enthält.

    2. Das Layout-Asset-Bundle hat das Ilch Asset Bundle als Abhängigkeit.

    3. Module können ebenfalls ihre Bundles registrieren, auch wieder mit Abhängigkeiten.

    4. Es wäre dann sogar möglich, Asset Bundles als Module auszulagern, z.B. ein JQuery Slider Plugin o.Ä.

    5. Nun gibt es eine zentrale Klasse in der die Bundles mit ihren Abhängigkeiten registriert werden. Bei der Registrierung werden die Abhängigkeiten entsprechend aufgelöst damit die richtige Reihenfolge eingehalten wird. Als letztes kommt i.d.R. das Layout Asset Bundle dran.

    6. Ein Asset Bundle hat immer ein Stammverzeichnis, das liegt z.B. in modules/forum/assets. Darin liegen dann die üblichen Ordner css, js, img usw.

    7. Im Header und Footer gibt es 1-2 Punkte, an denen die entsprechenden Dateien dann in der geordneten Reihenfolge ausgegeben werden.

    7a.) Dafür ist es (nach etwas längerem Nachdenken als vor dem Edit) notwendig, dass die Views und Boxen etc. vor dem Layout gerendert werden, ich glaube das ist momentan nicht der Fall?

    8.) Beim Publishing-Vorgang (= Erreichen einer Marke im Layout, z.B. im Header oder vor </body> für Javascript) erhalten alle Asset Bundles eine ID, z.B. basierend auf einem Hash o.Ä. Dann werden die Inhalte aus den jeweiligen Verzeichnissen (z.B. wie gesagt modules/forum/assets) in einen zentralen Ordner kopiert (idealerweise gesymlinkt), z.B. htdocs/assets, neben der index.php


    Grüße


    verwendete ilch Version: 2.0 (alpha)


    Zuletzt modifiziert von BadRandolph am 30.11.2016 - 00:14:00
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also da kann ich dir nur Recht geben und sagen, dass es vor nicht allzu langer Zeit ein Thema war (allerdings nur intern besprochen).

    Hier mal der letzte Auszug
    ZitatZitat geschrieben von Siggie
    Musst mal schauen ob das so geht bzw man darauf aufbauen kann?
    github.com/IlchCMS/Ilch-2.0/commit/eb7725aa39ea0f69d5f63946f880100a1ed8b80f


    ZitatZitat geschrieben von Mairu
    Auf jeden Fall ein guter Anfang. Allerdings sollte der Aufruf nicht im Controller erfolgen müssen.

    Man müsste also noch das layout in der View verfügbar machen. Das wäre allerdings mit einem einfachen Methode in Ilch\View machbar, ggf. müsste man den Constructor erweitern, um das Layout verfügbar zu machen.

    Dann sollten möglichst noch andere Funktionen hinzugefügt werden, um auch <script>/<style> Tags mit Inhalt hinzufügen zu können.

    Bei der Reihenfolge der Styles muss beachtet werden, dass die Style vom Layout zuletzt geladen werden, damit die Möglichkeit besteht die vom Modul zu überschreiben. (Wobei das soweit ich das jetzt sehe, am Layout selbst liegt, wo es diese einbindet.)

    Bei Frameworks kann man meist noch entscheiden, ob man vorn oder hinten anfügt. (prepand vs. append). Also dass man auch bei einem späteren Aufruf von css bestimmen kann, dass die Datei ganz am Anfang eingebunden wird.

    Dafür müssten dann allerdings auch alle CSS Dateien über den Helper verwaltet werden, also muss es dann auch möglich sein, nicht nur Modul CSS Dateien hinzuzufügen.


    Deine Vorschlag geht da ja noch viel weiter, ob diese Hierarchie notwendig ist, waage ich zwar fast zu bezweigeln, allerdings hätte man dann alle Möglichkeiten.

    Wenn du das also umsetzen möchtest, kann ich dich nur dazu ermuntern zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten