DocBox-API-Referenz

Auf dieser Seite

DocBox-API-Referenz

bxSites docbox macht aus deinen BoxLang-/CFML-Klassen eine durchsuchbare, im Theme gestaltete API-Referenz innerhalb der eigenen Website - das BoxLang-Gegenstück zu den Javadoc-Generatoren, die das Gradle- und das Maven-Plugin Java-Projekten bieten.

BoxLang wird dabei nicht selbst geparst. DocBox erledigt das bereits gut, also läuft hier DocBox' eigene JSON-Strategie, deren Ergebnis in ganz normale Markdown-Seiten übersetzt wird. Sie landen im Content-Verzeichnis wie jede andere Seite, der nächste build gestaltet sie im Theme, nimmt sie in den Suchindex auf und liefert sie wie handgeschriebene Inhalte aus.

Voraussetzung

Das Modul bx-docbox muss in der BoxLang-Laufzeit installiert sein:

# OS-Binary
install-bx-module bx-docbox

# CommandBox
box install bx-docbox

Fehlt es, bricht der Verb mit einer verständlichen Meldung ab statt mit einem Stacktrace.

Schnellstart

bxSites docbox
bxSites build

Ganz ohne Konfiguration dokumentiert docbox diejenigen der üblichen BoxLang-Quellordner, die dein Projekt tatsächlich hat - models, handlers, bifs, components, interceptors - und schreibt die Seiten nach docs/api/docbox/.

Konfiguration

Alles ist optional; das vollständige Schema steht unter docbox.

docbox:
  projectTitle: "Meine API"
  mappings:
    models: models
    bifs: bifs
  excludes: "tests|build"
  pagePathPrefix: api/docbox
  tags: [ api, docbox ]
{
	"docbox": {
		"projectTitle": "Meine API",
		"mappings": { "models": "models", "bifs": "bifs" },
		"excludes": "tests|build",
		"pagePathPrefix": "api/docbox",
		"tags": [ "api", "docbox" ]
	}
}

[docbox]
projectTitle = "Meine API"
excludes = "tests|build"
pagePathPrefix = "api/docbox"
tags = [ "api", "docbox" ]

[docbox.mappings]
models = "models"
bifs = "bifs"

Zu jedem Schlüssel gibt es ein Flag, das ihn für einen Lauf überschreibt:

bxSites docbox --mappings:models=models --projectTitle="Meine API" \
	--pagePathPrefix=api/classes --tags=api,classes --excludes=tests

--jsonDir=<pfad> behält DocBox' eigene JSON-Ausgabe, statt sie zu verwerfen.

Was erzeugt wird

Drei Arten von Seiten: ein Überblicksindex, ein Index je Package und eine Seite je Klasse.

docs/api/docbox/
├── index.md                    # alle Packages und Klassen
├── models/
│   ├── index.md                # Klassen dieses Packages
│   ├── UserService.md
│   └── security/
│       ├── index.md
│       └── Auth.md

Eine Klassenseite zeigt den Docblock der Klasse, ihre deklarierten property-Blöcke und ihre Funktionen nach Sichtbarkeit gruppiert - Konstruktor zuerst, dann public, package und private - jeweils mit vollständiger Signatur, Hinweistext, Parametertabelle und @return-Text. Die Mitglieder stecken in derselben Alpine.js-Filterleiste wie die Javadoc-Seiten, damit auch eine lange Klasse überschaubar bleibt.

In die Navigation einbinden

Die erzeugten Seiten sind normaler Inhalt und erscheinen von selbst in der automatischen Verzeichnisnavigation. Für eine bewusste Platzierung nimm den Index in deine eigene nav auf:

nav:
  - title: Referenz
    children:
      - api/docbox/index.md
{
	"nav": [
		{ "title": "Referenz", "children": [ "api/docbox/index.md" ] }
	]
}

[[nav]]
title = "Referenz"
children = [ "api/docbox/index.md" ]

Was bewusst fehlt

  • Keine Querverweise zwischen Klassen. Ein extends/implements-Ziel oder ein in einer Signatur genannter Typ erscheint als Inline-Code, auch wenn diese Klasse eine eigene Seite hat.
  • Keine geerbten Mitglieder. Nur was eine Klasse selbst deklariert - genau wie in DocBox' eigener JSON-Ausgabe.
  • Keine Navigationsverdrahtung. Die Seiten landen unter pagePathPrefix; die Platzierung bleibt dir überlassen.

Woher die Metadaten kommen

DocBox' JSON-Strategie serialisiert Name, Package, Typ, extends und Funktionen einer Klasse - aber nicht ihre deklarierten property-Blöcke, die implementierten Interfaces, ihre Annotationen auf Klassenebene oder den @return-Text einer Funktion. Diese vier sind für eine BoxLang-Referenz wichtig, Properties vor allem, weil sie jedes accessors-Feld und jede WireBox-inject-Angabe tragen. bx-sites liest sie deshalb aus denselben Klassenmetadaten nach, die DocBox selbst verwendet hat, und führt sie vor dem Rendern wieder zusammen. Nichts wird doppelt geparst.

Aus Gradle oder Maven

Beide Build-Plugins bieten diesen Generator ebenfalls an, für ein JVM-Projekt mit BoxLang-/CFML-Quellen - siehe Gradle-Plugin und Maven-Plugin.

Eine ColdBox-Anwendung zu dokumentieren ist ein eigener Verb - siehe ColdBox-Anwendungen.

Diese Seite bearbeiten Markdown herunterladen Zuletzt aktualisiert Sep 11, 2026, 7:11:15 PM