Kapitel 29. JSDoc: Generieren von API-Dokumentation
Inhaltsverzeichnis
Das Buch kaufen
(Werbung, bitte nicht blockieren.)

Kapitel 29. JSDoc: Generieren von API-Dokumentation

Es ist ein häufiges Entwicklungsproblem: Sie haben JavaScript-Code geschrieben, der von anderen verwendet werden soll, und benötigen eine ansprechend aussehende HTML-Dokumentation seiner API. Das De-facto-Standardwerkzeug in der JavaScript-Welt für die Generierung von API-Dokumentationen ist JSDoc.[23] Es ist seinem Java-Analogon, JavaDoc, nachempfunden.

JSDoc nimmt JavaScript-Code mit /** */-Kommentaren (normale Blockkommentare, die mit einem Sternchen beginnen) und erzeugt daraus eine HTML-Dokumentation. Zum Beispiel, gegeben den folgenden Code:

/** @namespace */
var util = {
    /**
     * Repeat <tt>str</tt> several times.
     * @param {string} str The string to repeat.
     * @param {number} [times=1] How many times to repeat the string.
     * @returns {string}
     */
    repeat: function(str, times) {
        if (times === undefined || times < 1) {
            times = 1;
        }
        return new Array(times+1).join(str);
    }
};

sieht die generierte HTML-Ausgabe wie in Abbildung 29-1 in einem Webbrowser aus.

Das Readme auf der JSDoc-Website erklärt, wie dieses Werkzeug installiert und aufgerufen wird.

Die Grundlagen von JSDoc

Bei JSDoc geht es darum, Entitäten (Funktionen, Methoden, Konstruktoren usw.) zu dokumentieren. Dies geschieht über Kommentare, die den Entitäten vorangehen und mit /** beginnen.

Syntax

Betrachten wir den am Anfang gezeigten Kommentar:

/**
 * Repeat <tt>str</tt> several times.
 * @param {string} str The string to repeat.
 * @param {number} [times=1] How many times to repeat the string.
 * @returns {string}
 */

Dies demonstriert einige der JSDoc-Syntax, die aus den folgenden Teilen besteht:

Für Funktionen und Methoden können Sie Parameter, Rückgabewerte und Ausnahmen dokumentieren, die sie auslösen können:

@param {paramType} paramName Beschreibung

Beschreibt den Parameter, dessen Name paramName ist. Typ und Beschreibung sind optional. Hier sind einige Beispiele:

@param str The string to repeat.
@param {string} str
@param {string} str The string to repeat.

Fortgeschrittene Funktionen

  • Optionaler Parameter

    @param {number} [times] The number of times is optional.
  • Optionaler Parameter mit Standardwert

    @param {number} [times=1] The number of times is optional.
@returns {returnType} Beschreibung
Beschreibt den Rückgabewert der Funktion oder Methode. Entweder Typ oder Beschreibung können weggelassen werden.
@throws {exceptionType} Beschreibung
Beschreibt eine Ausnahme, die während der Ausführung der Funktion oder Methode auftreten kann. Entweder Typ oder Beschreibung können weggelassen werden.

JSDoc unterscheidet zwischen Klassen und Konstruktoren. Das erstere Konzept ist eher ein Typ, während ein Konstruktor eine Möglichkeit ist, eine Klasse zu implementieren. Die integrierten Mittel von JavaScript zur Definition von Klassen sind begrenzt, weshalb es viele APIs gibt, die bei dieser Aufgabe helfen. Diese APIs unterscheiden sich oft radikal, sodass Sie JSDoc helfen müssen, herauszufinden, was vor sich geht. Die folgenden Tags ermöglichen Ihnen dies:

Die gängigsten Arten, eine Klasse zu definieren, sind: über eine Konstruktorfunktion, über ein Objektliteral und über ein Objektliteral mit einer @constructs-Methode.

Alle diese Tags sind auf der JSDoc-Website dokumentiert.

  • Modularität: @module, @exports, @namespace
  • Benutzerdefinierte Typen (für virtuelle Entitäten wie Callbacks, deren Signatur Sie dokumentieren können): @typedef, @callback
  • Rechtliche Angelegenheiten: @copyright, @license
  • Verschiedene Arten von Objekten: @mixin, @enum


[23] Die JSDoc-Website ist die Hauptquelle dieses Kapitels; einige Beispiele sind von dort übernommen.

Weiter: 30. Bibliotheken