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 PageSprachenliste
Next PageBuild
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Abhängigkeitsverwaltung

Bei der Entwicklung von NocoBase-Plugins unterscheiden wir zwei Arten von Abhängigkeiten: Plugin-Abhängigkeiten und globale Abhängigkeiten.

  • Globale Abhängigkeiten: Diese werden von @nocobase/server und @nocobase/client bereitgestellt. Plugins müssen sie nicht separat bündeln.
  • Plugin-Abhängigkeiten: Dies sind die spezifischen Abhängigkeiten eines Plugins (einschließlich serverseitiger Abhängigkeiten). Sie werden in die Plugin-Artefakte gebündelt.

#Entwicklungsprinzipien

Da Plugin-Abhängigkeiten in die Plugin-Artefakte gebündelt werden (einschließlich serverseitiger Abhängigkeiten, die in dist/node_modules landen), können Sie während der Plugin-Entwicklung alle Abhängigkeiten in devDependencies statt in dependencies deklarieren. Dies verhindert Unterschiede zwischen Entwicklungs- und Produktionsumgebung.

Wenn ein Plugin die folgenden Abhängigkeiten installieren muss, stellen Sie bitte sicher, dass die Versionsnummer mit den globalen Abhängigkeiten von @nocobase/server und @nocobase/client übereinstimmt. Andernfalls kann es zu Laufzeitkonflikten kommen.

#Globale Abhängigkeiten

Die folgenden Abhängigkeiten werden von NocoBase bereitgestellt und müssen in Plugins nicht gebündelt werden. Sollten Sie sie dennoch benötigen, stellen Sie bitte sicher, dass die Version mit der Framework-Version übereinstimmt.

// NocoBase Kern
'@nocobase/acl',
'@nocobase/actions',
'@nocobase/auth',
'@nocobase/cache',
'@nocobase/client',
'@nocobase/database',
'@nocobase/evaluators',
'@nocobase/logger',
'@nocobase/resourcer',
'@nocobase/sdk',
'@nocobase/server',
'@nocobase/test',
'@nocobase/utils',

// @nocobase/auth
'jsonwebtoken',

// @nocobase/cache
'cache-manager',
'cache-manager-fs-hash',

// @nocobase/database
'sequelize',
'umzug',
'async-mutex',

// @nocobase/evaluators
'@formulajs/formulajs',
'mathjs',

// @nocobase/logger
'winston',
'winston-daily-rotate-file',

// Koa Ökosystem
'koa',
'@koa/cors',
'@koa/router',
'multer',
'@koa/multer',
'koa-bodyparser',
'koa-static',
'koa-send',

// React Ökosystem
'react',
'react-dom',
'react/jsx-runtime',

// React Router
'react-router',
'react-router-dom',

// Ant Design
'antd',
'antd-style',
'@ant-design/icons',
'@ant-design/cssinjs',

// i18n
'i18next',
'react-i18next',

// dnd-kit
'@dnd-kit/accessibility',
'@dnd-kit/core',
'@dnd-kit/modifiers',
'@dnd-kit/sortable',
'@dnd-kit/utilities',

// Formily
'@formily/antd-v5',
'@formily/core',
'@formily/react',
'@formily/json-schema',
'@formily/path',
'@formily/validator',
'@formily/shared',
'@formily/reactive',
'@formily/reactive-react',

// Allgemeine Dienstprogramme
'dayjs',
'mysql2',
'pg',
'pg-hstore',
'supertest',
'axios',
'@emotion/css',
'ahooks',
'lodash',

#Entwicklungsempfehlungen

  1. Abhängigkeitskonsistenz wahren
    Wenn Sie Pakete verwenden möchten, die bereits in den globalen Abhängigkeiten vorhanden sind, vermeiden Sie die Installation unterschiedlicher Versionen. Nutzen Sie stattdessen direkt die globalen Abhängigkeiten.

  2. Bundling-Größe minimieren
    Bei gängigen UI-Bibliotheken (wie antd), Utility-Bibliotheken (wie lodash) und Datenbanktreibern (wie pg, mysql2) sollten Sie sich auf die global bereitgestellten Versionen verlassen, um doppeltes Bundling zu vermeiden.

  3. Konsistenz zwischen Debug- und Produktionsumgebung
    Die Verwendung von devDependencies gewährleistet die Konsistenz zwischen der Entwicklung und den finalen Artefakten. So vermeiden Sie Umgebungsunterschiede, die durch eine fehlerhafte Konfiguration von dependencies und peerDependencies entstehen könnten.