In den letzten fünf bis zehn Jahren sind Baustellen und Anwendungen für das Web viel komplexer geworden als vieles, was die Menschen in den 90er Jahren bauten. Das manuelle Erstellen von Websites mithilfe von HTML in Großbuchstaben, tabellenbasierten Layouts und hässlichem JavaScript ist längst vorbei, um eine Art niedlicher Animation auf einer Seite zu ermöglichen.
Jetzt haben wir eine Vielzahl von Technologien, Frameworks und Sprachen, die alle zusammenarbeiten, um uns dabei zu helfen, die Softwareanwendungen, die in einem Browser ausgeführt werden, voll ausschöpfen zu können.
Es ist eine tolle Zeit, Entwickler zu werden.
Da es so viele verschiedene Technologien gibt, mit denen wir arbeiten können, werden Heizplatten immer beliebter. Für diejenigen, die sich nicht auskennen, sind Boilerplates im Wesentlichen grundlegender Code, der Entwicklern beim Start von Projekten hilft, ohne Code oder bestimmte Komponenten schreiben zu müssen, die allen Standorten und / oder Anwendungen gemeinsam sind.
Sicher, sie können übertrieben und komplizierter als nötig sein, aber alle guten sollen ein Fundament legen, das heißt, eine Art Gerüst, das Ihnen hilft, sich auf das Schreiben Ihrer Kernalgorithmen zu konzentrieren , Code und Funktionen, die für Ihre Projekte und Bedürfnisse einzigartig sind.
Vor über einem Jahr begann ich mit der Arbeit an zwei Projekten - der WordPress Plugin Boilerplate und der WordPress Widget Boilerplate -, von denen jedes eine Grundlage bieten soll, aus der Entwickler Plugins mit den bewährten Vorgehensweisen von WordPress erstellen können. Zum Glück haben die Projekte eine Reihe weiterer Beiträge von der Open Source-Community erhalten, um sie so stark wie möglich zu machen.
Ein Aspekt der Aufrechterhaltung dieser Projekte ist, dass ich oft die Frage bekomme, warum ich die Dinge so ausgelegt habe, wie ich es gemacht habe. In dieser zweiteiligen Serie untersuchen wir die Boilerplates, die Gründe (und Vorteile), die ich für sie organisiert habe, und dann bauen wir ein einfaches Plugin mit einer dieser Boilerplates, um ein Beispiel dafür zu geben wie Sie sie in Ihren zukünftigen Projekten einsetzen können.
Eine der Schlüsselkomponenten für das Erstellen einer Softwareanwendung - unabhängig davon, wie groß oder wie klein - ist die Organisation des Programms. Dies ist nicht nur darauf beschränkt, wie die Klassen und / oder Funktionen zusammenhängen (das ist ein Thema eines ganzen anderen Artikels), sondern auch, wie die Dateien organisiert sind.
Idealerweise sollten Dateien nicht einfach in ein Verzeichnis gespeichert werden und dann anderen Entwicklern überlassen werden, um das Projekt zu verwalten. Stattdessen sollten sie logisch in kohärenten Verzeichnissen organisiert sein, die eindeutig - nicht schlau - benannt sind. Außerdem sollte jeder Entwickler, der an dem Projekt beteiligt ist, sehr wenig Mühe haben, zu verstehen, wo sich bestimmte Dateien befinden und wo sie eigene Ergänzungen einfügen.
Es ist wie das alte Sprichwort:
Ein Ort für alles und alles an seinem Platz.
Bei der Erstellung der Boilerplates habe ich nicht nur versucht, diesem speziellen Prinzip zu folgen, sondern auch der Inspiration zu folgen, wie Ruby on Rails das Layout modelliert. Insbesondere bevorzugen sie "Konvention gegenüber Konfiguration".
Offensichtlich ist WordPress weder Rails noch ein MVC-Framework, noch versuche ich es so zu machen. Ich versuche einfach, gute Ideen von anderen Entwicklern zu leihen, um unser Leben im Kontext unserer Umgebung ein bisschen leichter zu machen.
Unabhängig davon, wie einfach oder wie komplex Ihr Plugin ist, muss es enthalten sein wenigstens eine einzelne PHP-Datei. Diese Datei dient als Kern-Plugin-Datei, in der der gesamte Code, die Logik und die Funktionalität enthalten sind, die dem Plugin das Leben ermöglichen.
Wenn Sie sich das Spektrum der Plugins ansehen, werden Sie feststellen, dass Entwickler unterschiedliche Praktiken verwenden:
Ich bin nicht hier, um zu argumentieren, warum eine dieser Methoden (selbst die genannten) besser sind als die anderen; Warum die Boilerplates so angeordnet sind, wie sie sind und wie es für Sie funktionieren kann.
Zusätzlich zu einer Core-Plugin-Datei benötigen WordPress-Plugins eine README-Datei, um dem Endbenutzer Anweisungen zur Verwendung des Plugins sowie zum Auffüllen der Seite im WordPress-Plugin-Repository zu geben.
Grundsätzlich ist dies alles, was ein WordPress-Plugin benötigt: eine Core-Plugin-Datei und ein README. Mit diesen beiden Dateien können Sie einige sehr komplexe Plugins erstellen. Die Wartung kann jedoch enorm schwierig werden, insbesondere wenn andere Entwickler mithelfen, was letztendlich zu unbeabsichtigten Fehlern führen kann.
Daher bin ich ein großer Fan davon, die Komponenten des Codes logisch zu trennen.
Ansichten ist ein Wort, das ich aus dem MVC-Muster entlehnt habe (und von Rails inspiriert wurde).
Ansichten können als Frontend-Markup definiert werden, das Elemente für Administratoren und Site-Besucher auf dem Bildschirm darstellt.
Das ist alles. Einfach richtig?
Sicher, da wir in PHP arbeiten, werden im gesamten Code kleinere PHP-Tags vorhanden sein, aber der Großteil einer View-Datei sollte HTML mit Klassen- und ID-Attributen sein.
Innerhalb der Boilerplates gibt es zwei Ansichten:
Natürlich haben Plugins keine Ansicht für das Dashboard oder für die Besucher der Website. In diesem Fall die Ansichten Das Verzeichnis würde gelöscht und der Code, der für die Aufnahme in die Core-Plugin-Datei verantwortlich ist, wird entfernt.
Dies ist eine triviale Komponente der Boilerplates, denn jeder, der Frontends entwickelt, weiß, wie Stylesheets verwaltet werden, und hat wahrscheinlich einen eigenen Ansatz, um diese zu organisieren.
Aber um konsequent zu sein, ist es erwähnenswert, dass die css In diesem Verzeichnis werden alle Stylesheets gespeichert. Die Dateien folgen auch denselben Namenskonventionen wie ihre zugehörigen Ansichten.
Speziell:
Ich habe mit der Idee gespielt, eine Verzeichnisstruktur für LESS oder SASS einzuführen, aber ich denke, das wird für die Entwicklung zu kritisch und es ist nicht die Richtung, in die die Boilerplates gehen sollen. Ich möchte lieber, dass Entwickler ihre eigene Geschmacksrichtung wählen und diese integrieren.
Zu diesem Zweck ordne ich normalerweise meine Stylesheets in meinen eigenen Projekten an: a dev Verzeichnis in der css Verzeichnis und dann ein einführen admin.less und plugin.less Datei, die dann kompiliert und in die Wurzel aufgenommen wird css Verzeichnis.
Dies folgt weiterhin der Organisation der Boilerplates, während ich gleichzeitig meine LESS-Dateien einschließen kann.
Wie Stylesheets sind die JavaScript-Dateien eine triviale Komponente für die Boilerplates, da die meisten Personen, die mit WordPress gearbeitet haben und ein Thema oder Plugins entwickelt haben, JavaScript verwendet haben.
Leider ist einer der frustrierendsten Aspekte bei der Verwendung von JavaScript in WordPress - sowohl als Benutzer als auch als Entwickler -, dass Entwickler nicht oft Best Practices folgen.
Generell sollten Entwickler immer Folgendes tun:
Damit sind die Boilerplates - wie Stylesheets und Views - folgendermaßen organisiert:
Wie bei Stylesheets können sich Entwickler auch dafür entscheiden, ihr JavaScript vor der Veröffentlichung ihres Plugins zu fusseln und / oder zu minimieren. Um zu vermeiden, dass Sie in Bezug auf die Verwaltung von JavaScript-Dateien zu sehr beurteilt werden, enthält die Boilerplate keine Unterverzeichnisse. Ich erstelle jedoch häufig eine dev Verzeichnis in der js Verzeichnis, um mein vorgeflinertes, vorminifiziertes JavaScript zu verwalten.
Ein Aspekt beim Erstellen von Plugins ist sicherzustellen, dass sie von denjenigen, die andere Sprachen sprechen, zugänglich sind und übersetzt werden. Um dies so einfach wie möglich zu gestalten, enthalten die Heizplatten auch eine lang Verzeichnis und ein Skelett plugin.po Datei.
Diese Datei soll in Verbindung mit POEdit verwendet werden, sodass Sie nach Abschluss der Entwicklung alle lokalisierten Zeichenfolgen problemlos verarbeiten können.
Abgesehen von Stylesheets und JavaScript-Dateien bieten die Boilerplates keine Verzeichnisse oder Konventionen für die Verwaltung anderer Assets wie Bilder.
Wiederum ist es eine Balance zwischen dem Versuch, nicht zu meinungsstark zu sein, und bietet dabei gerade genug Gerüste, damit Entwickler sich auf ihre Kernfunktionen konzentrieren können. Obwohl nicht jedes Plugin administrative CSS, JavaScript oder Ansichten enthält, sind sie weitaus häufiger als das Einschließen von Bildern und anderen Assets.
Die gelieferte Konvention würde jedoch vorschreiben, dass Sie eine erstellen können Vermögenswerte Verzeichnis, ein Bilder Verzeichnis, ein Symbole Verzeichnis oder mit welcher Art von Datei Sie auch arbeiten.
Was ist der Sinn von all dem? Wäre es nicht genauso einfach, eine einzige Datei zu öffnen und mit dem Schreiben des gesamten Codes zu beginnen? Bestimmt. Aber denken Sie daran, der Großteil der Entwicklung kommt nach dem Ein Produkt wird veröffentlicht, und wenn Sie die Entwicklung von Plugins ernst nehmen, sind Sie im Bereich des Bauens von Produkten tätig.
Als solches müssen Sie mit dem Ende beginnen. Verwenden Sie ein einheitliches Schema zum Organisieren Ihrer Dateien, zum Benennen der Dateien usw.
Vor allem sollte das Gerüst den Entwicklern die Möglichkeit geben, problemlos an der Kerngeschäftslogik ihres Produkts zu arbeiten, ohne sich ihnen in den Weg zu stellen.
In diesem Artikel haben wir das "Warum" der Organisation der Boilerplates durchgesehen, aber das "Wie" der Boilerplates haben wir nicht wirklich überprüft. Im nächsten Artikel werfen wir einen Blick darauf.
Im Einzelnen werden wir Schritt für Schritt durch das Erstellen eines Plugins mit einer der Boilerplates arbeiten, sodass wir die typischen Schritte identifizieren können, die erforderlich sind, um eine Kopie der Boilerplate zu erhalten und mit der Entwicklung zu beginnen.