Orlok: JavaScript im Wiki

Beitrag lesen

Hallo Matthias

Wo wir gerade beim Thema sind: Ich habe mir nach unserem Gespräch wie angekündigt die meisten Artikel in der JavaScript-Sektion mal durchgelesen…

Zunächst einmal sind mir dabei zwei Duplikate aufgefallen:

  • Die durchaus noch leicht verbesserungswürdigen Beschreibungen zu Kommentaren in JavaScript sind unter der Rubrik Allgemeine Regeln für JavaScript aufgeführt, obwohl sie auch ihr eigenes Kapitel Kommentare haben. Identischer Inhalt. Ich würde sagen eine von beiden Versionen ist überflüssig.

  • Das Tutorial „Fader-Framework“, welches definitiv veraltet und stark überarbeitungsbedürftig ist, ist sowohl unter Tutorials als auch unter Anwendung und Praxis verlinkt. Ich denke, das sollte zumindest bei Tutorials herausgenommen werden. Das Setzen von Styles über JavaScript und das Animieren mit setTimeout sind nicht wirklich Dinge, die in einem selfHTML-Tutorial stehen sollten.

Darüber hinaus empfinde ich – wie ich in meiner letzten Mail an dich schon geschrieben habe – die strukturelle Vermischung von Informationen über die Sprache JavaScript mit solchen betreffend das Document Object Model als problematisch:

Wenn man die Startseite JavaScript aufruft, findet man zunächst die folgende Einteilung: Einführung, Sprachelemente, Objekte und APIs, wobei rein visuell schonmal nicht ersichtlich ist, ob die Rubriken Objekte und APIs hier als Unterpunkte zu Sprachelemente gedacht sind oder als eigenständige Sektionen.

Ich halte diese Aufteilung für sehr unglücklich, denn es erweckt den Eindruck, das DOM wäre Teil der Sprache selbst, was nicht der Fall ist, zumal das Document Object Model eine Schnittstelle darstellt, beziehungsweise eine Ansammlung von Schnittstellen, und dementsprechend rein formal betrachtet unter APIs aufgeführt sein sollte.

Allerdings denke ich, dass das DOM aufgrund seiner Relevanz durchaus eine eigene Rubrik beanspruchen könnte, wobei verschiedene Möglichkeiten denkbar wären:

  • Auf einer Stufe mit HTML, CSS und JavaScript.
  • Innerhalb von JavaScript in Abgrenzung zum Sprachkern und der Liste der anderen APIs.
  • Optisch hervorgehoben und prominent plaziert innerhalb der APIs-Rubrik.

Ich persönlich tendiere hier zum zweiten Punkt, was uns dann auch schon direkt zur nächsten Problematik führt, nämlich der von dir bereits erkannten unzureichenden Differenzierung zwischen den APIs des DOM selbst, sowie auch in Richtung der HTML-spezifischen Schnittstellen:

So stellt beispielsweise die Forms API eine HTML-spezifische Erweiterung der Schnittstelle Document des DOM dar.

Auch sind Eigenschaften wie firstChild oder nodeName Bestandteil der DOM-Schnittstelle Node, nicht jedoch eigene Eigenschaften der Elemente, wie durch die undifferenzierte Auflistung unter der gleichnamigen Rubrik im Wiki suggeriert wird (obschon es hierzu an anderer Stelle eine Erklärung gibt und die Auflistung aufgrund der Vererbung ja auch nicht falsch ist, sondern bloß ungenau).

Zudem ist beispielsweise die Methode addEventListener bei Objekte/DOM/Events nicht wirklich passend, zumal die Benennung der Rubrik impliziert, dass es hier um Event-Objekte geht. Die genannte Methode addEventListener ist jedoch ein Teil der DOM-Schnittstelle EventTarget, welche ja nicht den Events selbst (Schnittstelle Event), sondern den anderen DOM-Objekten vererbt wird, auf welche die Methode angewandt werden soll.

Jedenfalls halte ich die Rubrik DOM für einen der größten Schwachpunkte der ganzen Sektion: Nicht nur weil die Abgrenzung zum Sprachkern von JavaScript und zu anderen APIs nicht gewährleistet ist oder weil bei den vorhandenen Unterpunkten nicht hinreichend differenziert wird, sondern weil es hier überhaupt und grundsätzlich an Erklärungen mangelt, welche die Hintergründe beleuchten und die jeweiligen Aspekte des Themas in einen allgemein verständlichen Zusammenhang bringen würden.

So wie ich die Sache sehe, müsste also in einem ersten Schritt zunächst die Sektion DOM aus der Sektion Objekte herausgelöst werden um die unvorteilhafte Vermischung mit denjenigen Elementen aufzuheben, die Teil des Sprachkerns von JavaScript sind, welcher als ECMAScript standardisiert ist.

Womit wir dann auch bei der Frage der grundsätzlichen Gliederung der JavaScript-Sektion wären:

Ich denke, hier sollten wir uns zunächst auf das Verhältnis der Rubrik Objekte zu den unter der Überschrift Sprachelemente aufgeführten Artikeln konzentrieren:

Hier stellen wir zum Beispiel fest, dass der gerade so ausreichende Artikel zum Thema Arrays unter Objekte/Array aufgeführt ist, ein entsprechender Artikel unter Sprachelemente jedoch fehlt.

Im Gegensatz dazu findet sich unter Objekte/Function nur eine sehr kurze Beschreibung des Function-Konstruktors, ohne Erwähnung der Eigenschaften desselben oder der Methoden von Function.prototype, wohingegen unter Sprachelemente ein entsprechender Artikel über Funktionen existiert, welcher aber extrem verbesserungswürdig ist.

Weiterhin stellen wir fest, dass – zumindest in der Shortlist – der Rubrik Objekte zwar Links zu navigator oder screen verfügbar sind, welche insgesamt doch eher von nachrangiger Bedeutung sind, wohingegen eine direkte Referenz auf das grundlegendste „Objekt“ in JavaScript hier jedoch fehlt, nämlich Object, beziehungsweise der entsprechende Link erst beim Besuch der Seite JavaScript/Objekte sichtbar wird, und dieser dann auf eine sehr knappe Erklärung von Molily verweist.

Eine Übersicht über die verschiedenen Objekteigenschaften und -methoden fehlt hier völlig.

Statt dessen gibt es unter Sprachelemente einen Artikel Grundlegende Konzepte (Objekte, Eigenschaften und Methoden), welcher jedweder Beschreibung spottet…

Meiner Ansicht nach gibt es hier also im Wesentlichen zwei Optionen, wie man die entsprechenden Inhalte gliedern kann:

  • Entweder man verzichtet komplett auf die Sektion Objekte und setzt die Links zu den jeweiligen Eigenschaften und Methoden in den Kopfbereich der zugehörigen unter Sprachelemente aufgeführten Artikel

  • oder wenn man die Sektion Objekte beibehalten will, sollten dort auch wirklich nur die Beschreibungen der jeweiligen Eigenschaften und Methoden aufgeführt sein, wohingegen zusammenhängende Artikel konsequent unter Sprachelemente aufgelistet sein sollten.

Dabei wäre es womöglich auch nicht schlecht, einmal darüber nachzudenken, ob die jeweiligen Überschriften nicht vielleicht etwas präziser formuliert werden können…

Jedenfalls wäre in diesem Zusammenhang auch zu prüfen, ob die Liste der Events nicht doch besser unter DOM/Events aufgehoben wäre, wohingegen der von mir in Bearbeitung befindliche Artikel zur Ereignisverarbeitung vielleicht eher zu den allgemeinen Artikeln unter der etwas unglücklich gewählten Überschrift Sprachelemente einzureihen wäre.

Darüber hinaus fehlt soweit ich das erkenne in der JavaScript-Sektion auch ein Artikel, welcher sich einmal etwas näher mit dem Thema Vererbung auseinandersetzt, und auch der bestehende Artikel zum Thema Variablen müsste mal etwas ausführlicher gefasst werden, dito die Einführung.

Was ich von meiner Seite aus anbieten kann ist, in den nächsten Wochen nach der Fertigstellung des Artikels zum Thema Event-Handling mich der Themen: Objekte, Funktionen und Vererbung anzunehmen, sowie eventuell den Artikel „Variablen“ um tiefergehende Betrachtungen zum Thema Scope und Beschreibungen von let und const anzureichern, sofern mir in dieser Hinsicht niemand zuvorkommt…

Die Neufassung der Einführung, die Umsetzung der Trennung von JavaScript und DOM sowie die meiner Ansicht nach dringend notwendige Verbesserung der Inhalte zum Thema Document Object Model würde ich hingegen gerne anderen überlassen. ;-)

Gruß,

Orlok