logologo
Start
Handbuch
Entwickler
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Handbuch
Entwickler
Plugins
API
logologo

Schnellstart

Plugin-Entwicklung: Überblick
Erstes Plugin schreiben
Projektverzeichnisstruktur

Serverseitige Entwicklung

Überblick
Plugin
Collections (Datentabellen)
Datenbankoperationen
DataSourceManager
ResourceManager
ACL-Zugriffskontrolle
Middleware
Cache
Events
Request-Kontext
Migration (Update-Skripte)
Logger (Protokollierung)
I18n (Internationalisierung)
Command (Befehlszeile)
CronJobManager
Tests

Clientseitige Entwicklung

Überblick
Plugin
Kontext
Router
ACL-Zugriffskontrolle
DataSourceManager
Ressourcen
Requests
Stile & Themes
Logger (Protokollierung)
I18n (Internationalisierung)
Tests

Sonstiges

Plugin-Update-Leitfaden
Sprachenliste
Abhängigkeitsverwaltung
Build
Previous PageÜberblick
Next PageCollections (Datentabellen)
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Plugin

In NocoBase bietet das Server-Plugin eine modulare Möglichkeit, die serverseitige Funktionalität zu erweitern und anzupassen. Entwickler können die Plugin-Klasse von @nocobase/server erweitern, um Ereignisse, APIs, Berechtigungskonfigurationen und andere benutzerdefinierte Logik in verschiedenen Lebenszyklusphasen zu registrieren.

#Plugin-Klasse

Die grundlegende Struktur einer Plugin-Klasse sieht wie folgt aus:

import { Plugin } from '@nocobase/server';

export class PluginHelloServer extends Plugin {
  async afterAdd() {}

  async beforeLoad() {}

  async load() {}

  async install() {}

  async afterEnable() {}

  async afterDisable() {}

  async remove() {}

  async handleSyncMessage(message: Record<string, any>) {}

  static async staticImport() {}
}

export default PluginHelloServer;

#Lebenszyklus

Die Lebenszyklusmethoden eines Plugins werden in der folgenden Reihenfolge ausgeführt. Jede Methode hat ihren spezifischen Ausführungszeitpunkt und Zweck:

LebenszyklusmethodeAusführungszeitpunktBeschreibung
staticImport()Vor dem Laden des PluginsEine statische Klassenmethode, die in der Initialisierungsphase ausgeführt wird, die unabhängig vom Anwendungs- oder Plugin-Zustand ist. Sie dient zur Initialisierung von Aufgaben, die nicht von Plugin-Instanzen abhängen.
afterAdd()Direkt nach dem Hinzufügen des Plugins zum Plugin-ManagerDie Plugin-Instanz wurde erstellt, aber nicht alle Plugins sind vollständig initialisiert. Hier können grundlegende Initialisierungsarbeiten durchgeführt werden.
beforeLoad()Vor der Ausführung aller load()-Methoden der PluginsZu diesem Zeitpunkt können Sie auf alle aktivierten Plugin-Instanzen zugreifen. Dies eignet sich für die Registrierung von Datenbankmodellen, die Überwachung von Datenbankereignissen, die Registrierung von Middleware und andere vorbereitende Arbeiten.
load()Beim Laden des PluginsDie load()-Methoden werden erst ausgeführt, nachdem alle beforeLoad()-Methoden der Plugins abgeschlossen sind. Dies eignet sich für die Registrierung von Ressourcen, API-Schnittstellen, Diensten und anderer Kern-Geschäftslogik.
install()Bei der erstmaligen Aktivierung des PluginsWird nur einmal ausgeführt, wenn das Plugin zum ersten Mal aktiviert wird. Im Allgemeinen dient es zur Initialisierung von Datenbanktabellenstrukturen, zum Einfügen von Initialdaten und anderer Installationslogik.
afterEnable()Nach der Aktivierung des PluginsWird jedes Mal ausgeführt, wenn das Plugin aktiviert wird. Kann verwendet werden, um geplante Aufgaben zu starten, Cron-Jobs zu registrieren, Verbindungen herzustellen und andere Aktionen nach der Aktivierung durchzuführen.
afterDisable()Nach der Deaktivierung des PluginsWird ausgeführt, wenn das Plugin deaktiviert wird. Kann zur Bereinigung von Ressourcen, zum Beenden von Aufgaben, zum Schließen von Verbindungen und anderen Bereinigungsarbeiten verwendet werden.
remove()Beim Entfernen des PluginsWird ausgeführt, wenn das Plugin vollständig entfernt wird. Dient zum Schreiben der Deinstallationslogik, wie z.B. dem Löschen von Datenbanktabellen oder dem Bereinigen von Dateien.
handleSyncMessage(message)Nachrichtensynchronisation in einer Multi-Node-BereitstellungWenn die Anwendung im Multi-Node-Modus läuft, dient diese Methode zur Verarbeitung von Nachrichten, die von anderen Nodes synchronisiert wurden.

#Beschreibung der Ausführungsreihenfolge

Der typische Ausführungsablauf der Lebenszyklusmethoden:

  1. Statische Initialisierungsphase: staticImport()
  2. Anwendungsstartphase: afterAdd() → beforeLoad() → load()
  3. Erste Plugin-Aktivierungsphase: afterAdd() → beforeLoad() → load() → install()
  4. Zweite Plugin-Aktivierungsphase: afterAdd() → beforeLoad() → load()
  5. Plugin-Deaktivierungsphase: afterDisable() wird ausgeführt, wenn das Plugin deaktiviert wird.
  6. Plugin-Entfernungsphase: remove() wird ausgeführt, wenn das Plugin entfernt wird.

#app und zugehörige Mitglieder

Bei der Plugin-Entwicklung können Sie über this.app auf verschiedene APIs der Anwendungsinstanz zugreifen. Dies ist die zentrale Schnittstelle zur Erweiterung der Plugin-Funktionalität. Das app-Objekt enthält verschiedene Funktionsmodule des Systems. Entwickler können diese Module in den Lebenszyklusmethoden des Plugins verwenden, um Geschäftsanforderungen umzusetzen.

#app-Mitgliederliste

MitgliedernameTyp/ModulHauptzweck
loggerLoggerZum Protokollieren von Systemereignissen. Unterstützt verschiedene Protokollebenen (info, warn, error, debug) für eine einfache Fehlerbehebung und Überwachung. Weitere Informationen finden Sie unter Logger.
dbDatabaseBietet ORM-Schicht-Operationen, Modellregistrierung, Ereignisüberwachung, Transaktionskontrolle und andere datenbankbezogene Funktionen. Weitere Informationen finden Sie unter Datenbank.
resourceManagerResourceManagerDient zur Registrierung und Verwaltung von REST-API-Ressourcen und Operations-Handlern. Weitere Informationen finden Sie unter Ressourcenverwaltung.
aclACLDie Zugriffskontrollschicht dient zur Definition von Berechtigungen, Rollen und Ressourcenzugriffsrichtlinien, um eine feingranulare Berechtigungssteuerung zu ermöglichen. Weitere Informationen finden Sie unter ACL.
cacheManagerCacheManagerVerwaltet den systemweiten Cache und unterstützt verschiedene Cache-Backends wie Redis und In-Memory-Cache, um die Anwendungsleistung zu verbessern. Weitere Informationen finden Sie unter Cache.
cronJobManagerCronJobManagerDient zur Registrierung, zum Starten und zur Verwaltung von geplanten Aufgaben. Unterstützt die Konfiguration über Cron-Ausdrücke. Weitere Informationen finden Sie unter Geplante Aufgaben.
i18nI18nBietet Internationalisierungsunterstützung mit mehrsprachigen Übersetzungs- und Lokalisierungsfunktionen, damit Plugins mehrere Sprachen unterstützen können. Weitere Informationen finden Sie unter Internationalisierung.
cliCLIVerwaltet die Kommandozeilen-Schnittstelle, registriert und führt benutzerdefinierte Befehle aus und erweitert die NocoBase CLI-Funktionalität. Weitere Informationen finden Sie unter Kommandozeile.
dataSourceManagerDataSourceManagerVerwaltet mehrere Datenquellen-Instanzen und deren Verbindungen, um Szenarien mit mehreren Datenquellen zu unterstützen. Weitere Informationen finden Sie unter Datenquellenverwaltung.
pmPluginManagerDer Plugin-Manager dient zum dynamischen Laden, Aktivieren, Deaktivieren und Entfernen von Plugins sowie zur Verwaltung von Plugin-Abhängigkeiten.

Hinweis: Detaillierte Informationen zur Verwendung der einzelnen Module finden Sie in den entsprechenden Dokumentationskapiteln.