Wolfgang Schmidt Selbstständig

„Natürlich kann unser Minimal-CMS nicht mit einem „richtigen“ CMS konkurrieren. Vielmehr ging es darum, zu zeigen, welche Möglichkeiten Node.js mit den dazugehörigen Bibliotheken bietet.“

Mit der Etablierung von Node.js als Webtechnologie hat sich die Gestaltung von Webanwendungen grundlegend vereinfacht. Node.js ermöglicht es, in JavaScript einen vollwertigen Server zu implementieren und insbesondere die im Browser-JavaScript nicht verfügbaren Dateisystemzugriffe umzusetzen. In diesem Artikel implementieren wir ein sehr einfaches Content-Management-System ausschließlich auf Grundlage der Möglichkeiten von JavaScript/Node.js und der für Node.js zur Verfügung stehenden Bibliotheken.

Ein Content-Management-System (CMS) dient dazu, Webinhalte über ein Web-Frontend im Browser dynamisch zu ändern, d. h., es erlaubt entsprechend berechtigten Anwendern, Seiten bzw. Dateien hinzuzufügen, zu ändern und zu löschen. Damit erleichtern CMS die Wartung von Webinhalten enorm, da der Bearbeiter die meisten Schritte aus einem einzigen Werkzeug vornehmen kann und zur Änderung der Inhalte nicht in einen Editor für HTML-Dateien oder eine Programmierumgebung wechseln muss. Die Arbeitsweise gleicht eher dem Umgang mit einem Textverarbeitungsprogramm, bei dem Inhaltsänderungen direkt in der Applikation vorgenommen werden können. Dem Speichern in der Textverarbeitung entspricht bei Webinhalten dabei das Veröffentlichen der durchgeführten Änderungen. Ein weiterer Vorteil für die Administration entsprechender Systeme ist, dass dem Bearbeiter kein explizites Schreibrecht für das Dateisystem eingeräumt werden muss. Die Berechtigung zum Ändern von Inhalten wird vom CMS nicht auf Grundlage betriebssystemseitiger Schreibrechte, sondern auf Basis der Rolle des Anwenders vergeben. Ein Schreibrecht für das Dateisystem muss nur für den Anwender vergeben werden, unter dem der Prozess des CMS gestartet wird.

Es gibt viele existierende Implementierungen von CMS, z. B. TYPO3, Joomla! und unzählige andere mehr. Die Stärke dieser Implementierungen liegt darin, dass sie einen viel einfacheren Administrationszugang zu Webinhalten und -seiten bereitstellen, d. h. Seiten können nach dem WYSIWYG-Prinzip (What You See Is What You Get) bearbeitet werden. Darüber hinaus verfügen sie über ausgereifte Bibliotheken von Vorlagen/Templates und können damit und über Plug-in-Mechanismen an viele Anwendungssituationen angepasst werden. Der Einsatzbereich reicht von einfachen Vereinswebseiten bis zu kompletten Webshops.

Mit der Leistungsfähigkeit der genannten CMS geht eine gewisse Komplexität einher. Die meisten installierten CMS vereinen die folgenden Eigenschaften:

  • Der Zugriff auf die Daten erfolgt über einen dedizierten Webserver, meistens Apache.
  • Die Verwaltung der Inhalte geschieht in einem Datenbank-Management-System (DBMS), meistens MySQL.
  • Die serverseitige Logik wird meistens in einer Skriptsprache, in der Regel PHP, implementiert.

Das lässt sich gut mit dem weitgehend für Webanwendungen verbreiteten LAMP-Stack (Linux als Hostsystem, Apache als Webserver, MySQL als Datenbank und PHP als serverseitige Skriptsprache) abbilden. LAMP als bewährte Technik hat viele Vorteile, auf die hier nicht weiter eingegangen werden soll. Es gibt aber auch Nachteile:

  • Ein Webserver muss installiert, administriert und gewartet werden.
  • Ein DBMS muss installiert, administriert und gewartet werden.
  • Die serverseitig verwendete Programmiersprache (PHP) unterscheidet sich von der clientseitig verwendeten Sprache (JavaScript).

Insbesondere für den letzten Punkt waren lange Zeit keine Alternativen denkbar, da JavaScript primär nur als Browsersprache zur Verfügung stand und damit aus Sicherheitsgründen nur eingeschränkt nutzbar war. Eine der wichtigsten Einschränkungen war dabei der fehlende Zugriff auf das Dateisystem. Mit der Einführung von Node.js als Stand-Alone-Interpreter für JavaScript ist diese Einschränkung gefallen. Mit Node.js und den mittlerweile verfügbaren Bibliotheken ist es möglich, einen vollwertigen Webserver und die serverseitige Applikationslogik vollständig in JavaScript zu implementieren. Wir werden daher in diesem Artikel, gewissermaßen als „Proof of Concept“ ein äußerst einfaches CMS auf dieser Basis umsetzen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

PHP Magazin 2.18 - "μCMS"

Alle Infos zum Heft
579823302µCMS – Ein bisschen JavaScript und Node.js
X
- Gib Deinen Standort ein -
- or -