Questa documentazione è stata tradotta automaticamente dall'IA.
In NocoBase, il plugin lato server offre un modo modulare per estendere e personalizzare le funzionalità lato server. Gli sviluppatori possono estendere la classe Plugin di @nocobase/server per registrare eventi, API, configurazioni di permessi e altre logiche personalizzate nelle diverse fasi del ciclo di vita.
La struttura di base di una classe plugin è la seguente:
I metodi del ciclo di vita dei plugin vengono eseguiti nel seguente ordine. Ogni metodo ha un momento di esecuzione e uno scopo specifici:
| Metodo del ciclo di vita | Momento di esecuzione | Descrizione |
|---|---|---|
| staticImport() | Prima del caricamento del plugin | Metodo statico della classe, eseguito durante la fase di inizializzazione, indipendentemente dallo stato dell'applicazione o del plugin. Viene utilizzato per lavori di inizializzazione che non dipendono dalle istanze del plugin. |
| afterAdd() | Eseguito immediatamente dopo che il plugin viene aggiunto al gestore dei plugin | L'istanza del plugin è già stata creata, ma non tutti i plugin hanno completato l'inizializzazione. È possibile eseguire alcune operazioni di inizializzazione di base. |
| beforeLoad() | Eseguito prima del metodo load() di tutti i plugin | A questo punto, è possibile accedere a tutte le istanze dei plugin abilitati. È adatto per registrare modelli di database, ascoltare eventi del database, registrare middleware e altre operazioni preparatorie. |
| load() | Eseguito al caricamento del plugin | Il metodo load() inizia l'esecuzione solo dopo che tutti i beforeLoad() dei plugin sono stati completati. È adatto per registrare risorse, interfacce API, servizi e altre logiche di business fondamentali. |
| install() | Eseguito alla prima attivazione del plugin | Viene eseguito solo una volta, quando il plugin viene abilitato per la prima volta, ed è generalmente utilizzato per inizializzare la struttura delle tabelle del database, inserire dati iniziali e altre logiche di installazione. |
| afterEnable() | Eseguito dopo l'abilitazione del plugin | Viene eseguito ogni volta che il plugin viene abilitato e può essere utilizzato per avviare attività programmate, registrare attività pianificate, stabilire connessioni e altre azioni successive all'abilitazione. |
| afterDisable() | Eseguito dopo la disabilitazione del plugin | Viene eseguito quando il plugin viene disabilitato e può essere utilizzato per liberare risorse, interrompere attività, chiudere connessioni e altre operazioni di pulizia. |
| remove() | Eseguito alla rimozione del plugin | Viene eseguito quando il plugin viene completamente rimosso ed è utilizzato per scrivere la logica di disinstallazione, come l'eliminazione di tabelle del database o la pulizia di file. |
| handleSyncMessage(message) | Sincronizzazione dei messaggi in un'implementazione multi-nodo | Quando l'applicazione è in esecuzione in modalità multi-nodo, viene utilizzato per gestire i messaggi sincronizzati dagli altri nodi. |
Flusso di esecuzione tipico dei metodi del ciclo di vita:
staticImport()afterAdd() → beforeLoad() → load()afterAdd() → beforeLoad() → load() → install()afterAdd() → beforeLoad() → load()afterDisable() viene eseguito quando il plugin è disabilitato.remove() viene eseguito quando il plugin è rimosso.Nello sviluppo di plugin, può accedere a varie API fornite dall'istanza dell'applicazione tramite this.app, che rappresenta l'interfaccia principale per estendere le funzionalità del plugin. L'oggetto app contiene vari moduli funzionali del sistema. Gli sviluppatori possono utilizzare questi moduli nei metodi del ciclo di vita del plugin per implementare i requisiti di business.
| Nome membro | Tipo/Modulo | Scopo principale |
|---|---|---|
| logger | Logger | Registra i log di sistema, supporta diversi livelli (info, warn, error, debug) di output del log, utile per il debug e il monitoraggio. Vedere Logger |
| db | Database | Fornisce operazioni a livello ORM, registrazione di modelli, ascolto di eventi, controllo delle transazioni e altre funzionalità relative al database. Vedere Database. |
| resourceManager | ResourceManager | Utilizzato per registrare e gestire risorse API REST e gestori di operazioni. Vedere Gestione delle risorse. |
| acl | ACL | Livello di controllo degli accessi, utilizzato per definire permessi, ruoli e politiche di accesso alle risorse, implementando un controllo dei permessi granulare. Vedere ACL. |
| cacheManager | CacheManager | Gestisce la cache a livello di sistema, supporta Redis, cache in memoria e altri backend di cache per migliorare le prestazioni dell'applicazione. Vedere Cache |
| cronJobManager | CronJobManager | Utilizzato per registrare, avviare e gestire attività programmate, supporta la configurazione di espressioni Cron. Vedere Attività programmate |
| i18n | I18n | Supporto all'internazionalizzazione, fornisce funzionalità di traduzione multilingue e localizzazione, facilitando il supporto multilingue per i plugin. Vedere Internazionalizzazione |
| cli | CLI | Gestisce l'interfaccia a riga di comando, registra ed esegue comandi personalizzati, estende le funzionalità della CLI di NocoBase. Vedere Riga di comando |
| dataSourceManager | DataSourceManager | Gestisce più istanze di fonte dati e le loro connessioni, supporta scenari multi-fonte dati. Vedere Gestione delle fonti dati |
| pm | PluginManager | Gestore dei plugin, utilizzato per caricare, abilitare, disabilitare e rimuovere dinamicamente i plugin, gestire le dipendenze tra i plugin. |
Nota: Per l'utilizzo dettagliato di ciascun modulo, consulti i capitoli della documentazione corrispondenti.