このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
NocoBaseでは、サーバーサイドのプラグイン(Server Plugin)は、サーバーサイドの機能を拡張・カスタマイズするためのモジュール化された方法を提供します。開発者は@nocobase/serverのPluginクラスを継承することで、様々なライフサイクルステージで、イベント、API、権限設定などのカスタムロジックを登録できます。
基本的なプラグインクラスの構造は以下の通りです。
プラグインのライフサイクルメソッドは以下の順序で実行され、それぞれのメソッドには特定の実行タイミングと用途があります。
| ライフサイクルメソッド | 実行タイミング | 説明 |
|---|---|---|
| staticImport() | プラグインのロード前 | クラスの静的メソッドで、アプリケーションやプラグインの状態に依存しない初期化フェーズで実行されます。プラグインインスタンスに依存しない初期化作業に使用されます。 |
| afterAdd() | プラグインがプラグインマネージャーに追加された直後 | この時点ではプラグインインスタンスは作成されていますが、すべてのプラグインの初期化が完了しているわけではありません。基本的な初期化作業を実行できます。 |
| beforeLoad() | すべてのプラグインの load() の実行前 | この時点で、すべての有効化されたプラグインインスタンスにアクセスできます。データベースモデルの登録、データベースイベントのリッスン、ミドルウェアの登録などの準備作業に適しています。 |
| load() | プラグインのロード時 | すべてのプラグインの beforeLoad() が完了した後にload()が開始されます。リソース、APIインターフェース、サービスなどのコアビジネスロジックの登録に適しています。 |
| install() | プラグインが初めて有効化された時 | プラグインが最初に有効化されたときに一度だけ実行されます。通常、データベーステーブル構造の初期化、初期データの挿入などのインストールロジックに使用されます。 |
| afterEnable() | プラグインが有効化された後 | プラグインが有効化されるたびに実行されます。定期タスクの開始、スケジュールされたタスクの登録、接続の確立など、有効化後のアクションに使用できます。 |
| afterDisable() | プラグインが無効化された後 | プラグインが無効化されたときに実行されます。リソースのクリーンアップ、タスクの停止、接続のクローズなどのクリーンアップ作業に使用できます。 |
| remove() | プラグインが削除された時 | プラグインが完全に削除されたときに実行されます。データベーステーブルの削除、ファイルのクリーンアップなど、アンインストールロジックの記述に使用されます。 |
| handleSyncMessage(message) | マルチノードデプロイメント時のメッセージ同期 | アプリケーションがマルチノードモードで実行されている場合に、他のノードから同期されたメッセージを処理するために使用されます。 |
ライフサイクルメソッドの典型的な実行フローは以下の通りです。
staticImport()afterAdd() → beforeLoad() → load()afterAdd() → beforeLoad() → load() → install()afterAdd() → beforeLoad() → load()afterDisable()が実行されます。remove()が実行されます。プラグイン開発では、this.app を通じてアプリケーションインスタンスが提供する様々なAPIにアクセスできます。これはプラグインの機能拡張におけるコアインターフェースです。app オブジェクトにはシステムの様々な機能モジュールが含まれており、開発者はプラグインのライフサイクルメソッド内でこれらのモジュールを使用してビジネス要件を実現できます。
| メンバー名 | 型/モジュール | 主な用途 |
|---|---|---|
| logger | Logger | システムログを記録し、異なるレベル(info、warn、error、debug)のログ出力をサポートします。デバッグや監視に便利です。詳細は ログ を参照してください。 |
| db | Database | ORM層の操作、モデル登録、イベントリスニング、トランザクション制御など、データベース関連の機能を提供します。詳細は データベース を参照してください。 |
| resourceManager | ResourceManager | REST APIのリソースと操作ハンドラーの登録および管理に使用されます。詳細は リソース管理 を参照してください。 |
| acl | ACL | アクセス制御層で、権限、ロール、リソースアクセス戦略を定義し、きめ細やかな権限制御を実現します。詳細は 権限制御 を参照してください。 |
| cacheManager | CacheManager | システムレベルのキャッシュを管理し、Redis、メモリキャッシュなど様々なキャッシュバックエンドをサポートしてアプリケーションのパフォーマンスを向上させます。詳細は キャッシュ を参照してください。 |
| cronJobManager | CronJobManager | 定期タスクの登録、開始、管理に使用され、Cron式の設定をサポートします。詳細は 定期タスク を参照してください。 |
| i18n | I18n | 国際化をサポートし、多言語翻訳とローカライズ機能を提供します。プラグインが多言語に対応しやすくなります。詳細は 国際化 を参照してください。 |
| cli | CLI | コマンドラインインターフェースを管理し、カスタムコマンドの登録と実行、NocoBase CLI機能の拡張を行います。詳細は コマンドライン を参照してください。 |
| dataSourceManager | DataSourceManager | 複数のデータソースインスタンスとその接続を管理し、多データソースシナリオをサポートします。詳細は データソース管理 を参照してください。 |
| pm | PluginManager | プラグインマネージャーで、プラグインの動的なロード、有効化、無効化、削除、およびプラグイン間の依存関係の管理に使用されます。 |
ヒント:各モジュールの詳細な使用方法については、対応するドキュメントの章を参照してください。