# Total.js-5-Konventionen für Coding-Assistenten

> Konventionen für native Anwendungen, Quellenprioritäten und Versionsgrenzen für Agenten, die Total.js 5 verwenden, mit einem getesteten Beispiel für Aktion und direkten Controller.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: de
Content-SHA256: 834c74146b8553969df3eba9913b8f71bdc33dd8ad2ca624e0283f72261de01b
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Nutze diese Anleitung zusammen mit den [Total.js-Richtlinien](https://github.com/totaljs-es/guidelines) und [Total.js AI Context](https://github.com/totaljs/aicontext). Ihre geprüften Commits sind in [ai-sources.json](/ai-sources.json) festgehalten. Das sind verschiedene Arten von Belegen: Stilrichtlinien beschreiben Konventionen; das Laufzeitverhalten muss mit dem installierten Framework und einem ausführbaren Beispiel übereinstimmen. Diese Seite bescheinigt nicht jedes Beispiel in einem der beiden externen Repositorys.

## Halte den Anwendungscode nativ

Nachdem der Bootstrap `total5` geladen hat, stellt die Laufzeit ihre Globals bereit und lädt Anwendungsdateien aus den Verzeichnissen des Frameworks. Verwende `MAIN`, `FUNC`, `MODS`, `CONF` und `PATH` entsprechend ihren dokumentierten Rollen. Bevorzuge eine vorhandene Framework-Funktion, bevor du einen Ersatz oder eine Abhängigkeit hinzufügst. Importiere Controller und Definitionen der Anwendung nicht ineinander, nur um die Projektstruktur eines anderen Frameworks nachzuahmen. Eigenständige Skripte und wirklich externe Abhängigkeiten haben eine andere Importgrenze.

Folge im neuen Anwendungscode dem Stil des Ökosystems: kleingeschriebene Dateinamen, Tabs, Semikolons, kurze Strings in einfachen Anführungszeichen und passende `var`- oder `let`-Bindungen innerhalb von Methoden. Importe auf Modulebene können `const` und großgeschriebene Modulnamen verwenden. Halte die Namen in der gesamten App konsistent. Für Details und Ausnahmen nutze die verlinkten Richtlinien und die tatsächlichen Projektkonventionen.

## Unterscheide die APIs und ihre Kontexte

- Ein normaler HTTP-Controller erhält `$`; sende JSON mit `$.json()` und setze den Antwortstatus über `$.response.status`.
- Eine Aktion erhält ihren Aktionskontext `$` und das validierte `model`; gib das Ergebnis über `$.callback()` zurück. Der HTTP-Controller, falls vorhanden, ist `$.controller`.
- In Total.js 5 erzeugt `NEWSCHEMA(name, '...')` ein wiederverwendbares kompaktes Schema. Seine Callback-Form gruppiert Aktionen mit `schema.action()`. Das Beispiel aus Total.js 4 mit `schema.define()` / `schema.setSave()` darf nicht als austauschbare Total.js-5-API dargestellt werden.
- Bevorzuge stabile, explizite öffentliche Aktions-IDs wie `Contacts|create` für neue isolierte Operationen. Bestehende gruppierte Aktionen können IDs wie `Contacts/create` haben; respektiere die von der Anwendung deklarierten IDs und Routen, statt sie blind umzubenennen.
- Unterscheide im API Routing die Autorisierung an der Route vom öffentlichen Operationsnamen und der `{ schema, data }`-Hülle. Gewöhnliche HTTP-Routen werden ebenfalls unterstützt; zwinge nicht jede JSON-Antwort durch eine Aktion.
- Behandle Datenbankintegration, Authentifizierungsrichtlinie und Autorisierung als Anforderungen der Anwendung. Dass das Framework eine Funktion bietet, heißt nicht, dass eine Produktivanwendung automatisch konfiguriert oder sicher ist.

AI Context enthält Beispiele mit sowohl isolierten als auch gruppierten Aktionskonventionen. Das Richtlinien-Repository enthält auch ältere Schema-Beispiele. Gleiche jedes Beispiel mit seiner Version und der Laufzeit ab, statt jedes Snippet in einen Kontext zu kopieren. Das ausführbare Beispiel unten prüft eine stabile Aktions-ID und einen direkten Controller mit dem installierten Total.js-5-Paket.

```js definitions/contacts.js
NEWACTION('Contacts|create', {
	input: '*name:String',
	action: function($, model) {
		$.callback({ id: UID(), name: model.name });
	}
});
```

```js controllers/contacts.js
exports.install = function() {
	ROUTE('GET /hello/', hello);
	ROUTE('POST /contacts/ --> *Contacts|create');
};

function hello($) {
	$.json({ hello: 'world' });
}
```

## Bevor du generierten Code jemandem übergibst

Ermittle die installierten Versionen von Framework und Frontend, lies die passenden Forge-Seiten, führe das relevante Beispiel aus und gib an, was ungetestet bleibt. Eine Prüfung globaler Namen ist ein nützliches Feedback, ersetzt aber nicht die Ausführung von Code. Bewahre beim Veröffentlichen von Beispielen die Quellrevision, den Eingabevertrag und die Testbedingungen auf.

[Total.js auswählen](/en/docs/choosing-totaljs/) behandelt Architekturentscheidungen. Der [Kurzkontext](/ai-context.md) ist ein Ausgangspunkt für einen Assistenten, dem Forge ausdrücklich als Quelle gegeben wird; ihn bereitzustellen ist etwas anderes, als die spontanen Empfehlungen eines Modells zu messen.
