Ich habe in letzter Zeit viele Einführungen in CSS-Frameworks gesehen. Vor ein paar Tagen habe ich etwas gesagt: „In meinem begrenzten Blickfeld habe ich nichts gesehen, was man wirklich als CSS-Framework bezeichnen könnte.“ Vielleicht ist das Sichtfeld zu klein oder die Welt ist zu groß. Ich habe immer noch das Gefühl, dass es noch viele Dinge gibt, die ich nicht sehen kann.
Schauen wir uns zunächst ein Konzept an, dem ich zustimme:
Das Framework kann in zwei Typen unterteilt werden: White-Box und Black-Box.
Vererbungsbasierte Frameworks werden White-Box-Frameworks genannt. Die sogenannte White Box ist sichtbar und die internen Implementierungsdetails der geerbten übergeordneten Klasse sind der Unterklasse bekannt. Anwendungsentwickler, die White-Box-Frameworks verwenden, entwickeln Systeme, indem sie Unterklassen ableiten oder Mitgliedsmethoden von übergeordneten Klassen überschreiben. Die Implementierung einer Unterklasse hängt stark von der Implementierung der übergeordneten Klasse ab, und diese Abhängigkeit schränkt die Flexibilität und Vollständigkeit der Wiederverwendung ein. Die Lösung dieser Einschränkung kann jedoch darin bestehen, nur die abstrakte übergeordnete Klasse zu erben, da abstrakte Klassen grundsätzlich keine konkrete Implementierung bereitstellen. Das White-Box-Framework ist ein Programmgerüst, und vom Benutzer abgeleitete Unterklassen sind Zubehör für dieses Gerüst.
Ein Framework, das auf der Assemblierung von Objektkomponenten basiert, ist ein Black-Box-Framework. Anwendungsentwickler erhalten eine Systemimplementierung durch Sortieren und Zusammenstellen von Objekten. Benutzer müssen nur die externe Schnittstelle der Komponente verstehen und müssen nicht die spezifische interne Implementierung verstehen. Darüber hinaus ist Assembly flexibler als Vererbung und kann dynamisch geändert werden. Vererbung ist nur ein statisches Konzept zur Kompilierungszeit.
Im Idealfall kann jede erforderliche Funktionalität durch Zusammenbau vorhandener Komponenten erreicht werden. Tatsächlich ist es bei weitem nicht möglich, neue Komponenten durch Vererbung zu erhalten, als neue Komponenten unter Verwendung vorhandener Komponenten zusammenzustellen. White Box und Black Box werden bei der Entwicklung des Systems gleichzeitig verwendet. Allerdings entwickeln sich White-Box-Frameworks tendenziell zu Black-Box-Frameworks, und Black-Box-Frameworks sind auch die idealen Ziele, die die Systementwicklung erreichen möchte.
Werfen wir einen Blick zurück auf die vielen CSS-Frameworks im Internet (YUI heißt „YUI Library CSS Tools“ und nicht „YUI CSS Frameworks“). Wie viele davon sind tatsächlich mit dem Konzept eines Frameworks geschrieben und wie viele davon Definieren Sie einfach Stilbasisklassen. Natürlich ist das Verständnis des Frameworks möglicherweise nicht für alle gleich und Sie stimmen möglicherweise nicht mit dem überein, was ich sage.
Lassen Sie uns noch einmal über das CSS-Framework sprechen. Es ist nicht so, dass ich mir der Existenz dieses Dings nicht bewusst bin, ich habe solche Dinge schon seit ein oder zwei Jahren ausprobiert. Für große Websites erfordert die Frontend-Entwicklung eine Lösung. Das Framework ist natürlich die erste Wahl. Schade, dass es zu weit von mir entfernt ist und ich zu schwach bin. T_T. Ich brauche nur zwei Dinge:
Etwas, um den Inhalt unten zu verwalten
Klasse/Komponente
Der erste Punkt ist natürlich, dass CSS das nicht kann, und der zweite Punkt ist, dass es im Vergleich zu anderen Sprachen sehr schwach ist.
Als ich vor etwa einem Jahr an einer mittelgroßen Website arbeitete, dachte ich, um faul zu sein, daran, den Inhalt zu modularisieren und die Seiten von Programmierern zusammenstellen zu lassen. Die allgemeine Richtung besteht darin, einen Funktionsblock nach dem anderen zu kapseln, wenn er den entsprechenden Inhalt verwenden möchte Ich muss den Code nicht wiederholen. Hallo zusammen.
Auf derselben Website ist es normal, dass ähnliche Inhaltsblöcke mehrfach verwendet werden, z. B. eine Bilderliste, eine Liste von Benutzeravataren oder eine Liste von Gruppensymbolen schreibe es? Sollten die gleichen Wörter so geschrieben werden?
.photoListUesr,.photoListGroup{ /*_*/ }
Das bedeutet nicht, dass es unmöglich ist, aber was ist, wenn Sie plötzlich einen ähnlichen Stil hinzufügen möchten? Zu diesem Zeitpunkt müssen Sie möglicherweise den Stil anpassen. Was ist mit mir? Ich habe es so versucht:
<div class="photoList UesrCt" />
<div class="photoList GroupCt" />
In diesem Fall trennen wir die allgemeinen Ausdrücke von Anfang an, verwenden .photoList als Prototyp und verarbeiten die Details über zusätzliche Klassen. Vor ein paar Tagen habe ich über objektorientierte XHTML- und CSS-Programmierung geschrieben. Tatsächlich habe ich nur die Hälfte davon geschrieben, aber ich habe es nicht zu Ende geschrieben, weil ich zu viele Beispiele schreiben musste Der Kern wurde bereits geschrieben. ^^ Dies hat natürlich auch bestimmte Probleme, das heißt, die Definition des ursprünglichen Prototyps muss sehr sorgfältig sein und sicherstellen, dass dies möglicherweise nicht der Fall ist, wenn er in Zukunft überarbeitet wird modifiziert. Mit CSS passt ein Framework grundsätzlich höchstens auf eine Website. Wenn die Website groß genug ist, ist es natürlich sinnvoll, sie auf diese Weise zu verwenden.
Je modularer HTML und CSS werden, desto fragmentierter werden die Dateien und desto schwerwiegender wird dieses Problem. HTML ist einfach zu handhaben, da die Anwendung schließlich eine Kopie zusammenführt und ausgibt, CSS wird jedoch normalerweise verworfen und direkt verwendet. Im Beispiel gerade sieht der Weg zum Importieren von CSS in die Webseite wie folgt aus:
@import-URL(/xxx/photoList.css);
@import-URL(/xxx/UserCt.css);
@import-URL(/xxx/GroupCt.css);
Sie können sogar darüber nachdenken, ein Programm zum Zusammenführen von Seiten zu verwenden, aber es ist einfach zu verwenden und proportional zur Anzahl der Anfragen. Im Allgemeinen wird sich jeder dafür entscheiden, Dateien manuell zusammenzuführen. Obwohl das menschliche Gehirn intelligenter ist als ein Computer, ist die Rechenleistung des menschlichen Gehirns in vielen Fällen nicht so gut wie die eines Computers. Ich hatte einmal die Idee, ein serverseitiges Programm zu verwenden, um den CSS-Freigabemechanismus zu verwalten. Die allgemeine Richtung besteht darin, die Nutzung verschiedener Seiten der gesamten Website anhand von Website-Zugriffsprotokollen zu analysieren und das Programm zu verwenden, um zu berechnen, welche öffentlichen Nutzungen es gibt Die Reihenfolge (die Reihenfolge der CSS-Dateien beeinflusst die Priorität) usw. muss zusammengeführt werden. Verschiedene Berechnungen und komprimierte Ausgaben.
Leider ist ein derart komplexes Programm möglicherweise nur für einen Sender oder eine Gruppe von Sendern derselben Serie geeignet. Obwohl dies etwas mühsam ist, halte ich es für notwendig, diese Methode für Websites auf Portalebene zu verwenden. Voraussetzung ist natürlich, dass das gesamte Team dasselbe Designmuster verwenden muss.
PS: Das obige CSS-Publishing-Programm ist nur meine Fantasie. Interessierte Freunde können es ausprobieren.
Natürlich kann das oben Gesagte nicht als CSS-Framework bezeichnet werden, sondern möglicherweise nur als Lösung auf Systemebene. Schließlich ist CSS nur eine beschreibende Sprache.
Als ich gestern Abend mit Yueying gebratene Ente aß, sprachen wir darüber und er fragte mich, ob ich eine integrierte Front-End-Lösung hätte. Das gleiche Problem tritt auf, wenn JS in Komponenten unterteilt wird, und ähnliche Veröffentlichungsmechanismen sollten auch auf JS anwendbar sein. Aber ich habe noch nicht an eine vollständig integrierte Lösung gedacht. Vielleicht lädt Yueying mich noch ein paar Mal mit gebratener Ente ein, und ich kann es herausfinden.