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 PageErstes Plugin schreiben
Next PageÜberblick
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Projektstruktur

Ganz gleich, ob Sie den Quellcode über Git klonen oder ein Projekt mit create-nocobase-app initialisieren: Das generierte NocoBase-Projekt ist im Wesentlichen ein auf Yarn Workspace basierendes Monorepo.

#Überblick über die oberste Verzeichnisstruktur

Das folgende Beispiel verwendet my-nocobase-app/ als Projektverzeichnis. In verschiedenen Umgebungen kann es geringfügige Abweichungen geben:

my-nocobase-app/
├── packages/              # Projekt-Quellcode
│   ├── plugins/           # Quellcode von Plugins in Entwicklung (unkompiliert)
├── storage/               # Laufzeitdaten und dynamisch generierte Inhalte
│   ├── apps/
│   ├── db/
│   ├── logs/
│   ├── uploads/
│   ├── plugins/           # Kompilierte Plugins (einschließlich der über die Benutzeroberfläche hochgeladenen)
│   └── tar/               # Plugin-Paketdateien (.tar)
├── scripts/               # Hilfsskripte und Tool-Befehle
├── .env*                  # Umgebungsvariablen-Konfigurationen für verschiedene Umgebungen
├── lerna.json             # Lerna Workspace-Konfiguration
├── package.json           # Root-Paketkonfiguration, deklariert Workspace und Skripte
├── tsconfig*.json         # TypeScript-Konfigurationen (Frontend, Backend, Pfad-Mapping)
├── vitest.config.mts      # Vitest Unit-Test-Konfiguration
└── playwright.config.ts   # Playwright E2E-Testkonfiguration

#Erläuterung des Unterverzeichnisses packages/

Das Verzeichnis packages/ enthält die Kernmodule und erweiterbaren Pakete von NocoBase. Der Inhalt hängt von der Projektquelle ab:

  • Projekte, die mit create-nocobase-app erstellt wurden: Standardmäßig enthält es nur packages/plugins/, das den Quellcode für benutzerdefinierte Plugins speichert. Jedes Unterverzeichnis ist ein unabhängiges npm-Paket.
  • Geklontes offizielles Quellcode-Repository: Hier finden Sie weitere Unterverzeichnisse wie core/, plugins/, pro-plugins/, presets/ usw., die dem Framework-Kern, den integrierten Plugins und den offiziellen vordefinierten Lösungen entsprechen.

In jedem Fall ist packages/plugins der Hauptort für die Entwicklung und das Debugging benutzerdefinierter Plugins.

#Das storage/ Laufzeitverzeichnis

storage/ speichert zur Laufzeit generierte Daten und Build-Ausgaben. Die gängigen Unterverzeichnisse werden im Folgenden erläutert:

  • apps/: Konfiguration und Cache für Multi-App-Szenarien.
  • logs/: Laufzeit-Logs und Debug-Ausgaben.
  • uploads/: Vom Benutzer hochgeladene Dateien und Medienressourcen.
  • plugins/: Paketierte Plugins, die über die Benutzeroberfläche hochgeladen oder per CLI importiert wurden.
  • tar/: Komprimierte Plugin-Pakete, die nach Ausführung von yarn build <plugin> --tar generiert werden.

Es wird in der Regel empfohlen, das storage-Verzeichnis zu .gitignore hinzuzufügen und es bei der Bereitstellung oder Sicherung separat zu behandeln.

#Umgebungskonfiguration und Projekt-Skripte

  • .env, .env.test, .env.e2e: Werden jeweils für den lokalen Betrieb, Unit-/Integrationstests und End-to-End-Tests verwendet.
  • scripts/: Enthält gängige Wartungsskripte (wie Datenbankinitialisierung, Release-Hilfsprogramme usw.).

#Plugin-Ladepfade und Priorität

Plugins können an mehreren Orten existieren. NocoBase lädt sie beim Start in der folgenden Prioritätsreihenfolge:

  1. Die Quellcode-Version in packages/plugins (für lokale Entwicklung und Debugging).
  2. Die gepackte Version in storage/plugins (über die Benutzeroberfläche hochgeladen oder per CLI importiert).
  3. Abhängigkeitspakete in node_modules (über npm/yarn installiert oder im Framework integriert).

Wenn ein Plugin mit demselben Namen sowohl im Quellcode-Verzeichnis als auch im gepackten Verzeichnis existiert, priorisiert das System das Laden der Quellcode-Version, was lokale Überschreibungen und Debugging erleichtert.

#Plugin-Verzeichnisvorlage

Erstellen Sie ein Plugin über die CLI:

yarn pm create @my-project/plugin-hello

Die generierte Verzeichnisstruktur sieht wie folgt aus:

packages/plugins/@my-project/plugin-hello/
├── dist/                    # Build-Ausgabe (bei Bedarf generiert)
├── src/                     # Quellcode-Verzeichnis
│   ├── client/              # Frontend-Code (Blöcke, Seiten, Modelle usw.)
│   │   ├── plugin.ts        # Hauptklasse des Client-Plugins
│   │   └── index.ts         # Client-Einstiegspunkt
│   ├── locale/              # Mehrsprachige Ressourcen (Frontend und Backend geteilt)
│   ├── swagger/             # OpenAPI/Swagger-Dokumentation
│   └── server/              # Serverseitiger Code
│       ├── collections/     # Sammlung-Definitionen
│       ├── commands/        # Benutzerdefinierte Befehle
│       ├── migrations/      # Datenbankmigrationsskripte
│       ├── plugin.ts        # Hauptklasse des Server-Plugins
│       └── index.ts         # Server-Einstiegspunkt
├── index.ts                 # Frontend- und Backend-Bridge-Export
├── client.d.ts              # Frontend-Typdeklarationen
├── client.js                # Frontend-Build-Artefakt
├── server.d.ts              # Serverseitige Typdeklarationen
├── server.js                # Serverseitiges Build-Artefakt
├── .npmignore               # Veröffentlichungs-Ignorierkonfiguration
└── package.json

Nach Abschluss des Builds werden das Verzeichnis dist/ sowie die Dateien client.js und server.js geladen, wenn das Plugin aktiviert wird.
Während der Entwicklung müssen Sie nur das Verzeichnis src/ ändern. Vor der Veröffentlichung führen Sie einfach yarn build <plugin> oder yarn build <plugin> --tar aus.