logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo

クイックスタート

プラグイン開発概要
最初のプラグインを作成
プロジェクトディレクトリ構造

サーバーサイド開発

概要
プラグイン
コレクション
データベース操作
データソース管理
リソース管理
ACL権限制御
ミドルウェア
キャッシュ
イベント
リクエストコンテキスト
マイグレーション
ロガー
I18n 国際化
コマンド
定時タスク管理
テスト

クライアントサイド開発

概要
プラグイン
コンテキスト
ルーター
ACL権限制御
データソース管理
リソース
リクエスト
スタイルとテーマ
ロガー
I18n 国際化
テスト

その他

プラグインアップグレードガイド
言語一覧
依存関係の管理
ビルド
Previous Page概要
Next Pageコレクション
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#プラグイン

NocoBaseでは、サーバーサイドのプラグイン(Server Plugin)は、サーバーサイドの機能を拡張・カスタマイズするためのモジュール化された方法を提供します。開発者は@nocobase/serverのPluginクラスを継承することで、様々なライフサイクルステージで、イベント、API、権限設定などのカスタムロジックを登録できます。

#プラグインクラス

基本的なプラグインクラスの構造は以下の通りです。

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;

#ライフサイクル

プラグインのライフサイクルメソッドは以下の順序で実行され、それぞれのメソッドには特定の実行タイミングと用途があります。

ライフサイクルメソッド実行タイミング説明
staticImport()プラグインのロード前クラスの静的メソッドで、アプリケーションやプラグインの状態に依存しない初期化フェーズで実行されます。プラグインインスタンスに依存しない初期化作業に使用されます。
afterAdd()プラグインがプラグインマネージャーに追加された直後この時点ではプラグインインスタンスは作成されていますが、すべてのプラグインの初期化が完了しているわけではありません。基本的な初期化作業を実行できます。
beforeLoad()すべてのプラグインの load() の実行前この時点で、すべての有効化されたプラグインインスタンスにアクセスできます。データベースモデルの登録、データベースイベントのリッスン、ミドルウェアの登録などの準備作業に適しています。
load()プラグインのロード時すべてのプラグインの beforeLoad() が完了した後にload()が開始されます。リソース、APIインターフェース、サービスなどのコアビジネスロジックの登録に適しています。
install()プラグインが初めて有効化された時プラグインが最初に有効化されたときに一度だけ実行されます。通常、データベーステーブル構造の初期化、初期データの挿入などのインストールロジックに使用されます。
afterEnable()プラグインが有効化された後プラグインが有効化されるたびに実行されます。定期タスクの開始、スケジュールされたタスクの登録、接続の確立など、有効化後のアクションに使用できます。
afterDisable()プラグインが無効化された後プラグインが無効化されたときに実行されます。リソースのクリーンアップ、タスクの停止、接続のクローズなどのクリーンアップ作業に使用できます。
remove()プラグインが削除された時プラグインが完全に削除されたときに実行されます。データベーステーブルの削除、ファイルのクリーンアップなど、アンインストールロジックの記述に使用されます。
handleSyncMessage(message)マルチノードデプロイメント時のメッセージ同期アプリケーションがマルチノードモードで実行されている場合に、他のノードから同期されたメッセージを処理するために使用されます。

#実行順序の説明

ライフサイクルメソッドの典型的な実行フローは以下の通りです。

  1. 静的初期化フェーズ:staticImport()
  2. アプリケーション起動フェーズ:afterAdd() → beforeLoad() → load()
  3. プラグイン初回有効化フェーズ:afterAdd() → beforeLoad() → load() → install()
  4. プラグイン再有効化フェーズ:afterAdd() → beforeLoad() → load()
  5. プラグイン無効化フェーズ:プラグインが無効化されるとafterDisable()が実行されます。
  6. プラグイン削除フェーズ:プラグインが削除されるとremove()が実行されます。

#app と関連メンバー

プラグイン開発では、this.app を通じてアプリケーションインスタンスが提供する様々なAPIにアクセスできます。これはプラグインの機能拡張におけるコアインターフェースです。app オブジェクトにはシステムの様々な機能モジュールが含まれており、開発者はプラグインのライフサイクルメソッド内でこれらのモジュールを使用してビジネス要件を実現できます。

#app メンバーリスト

メンバー名型/モジュール主な用途
loggerLoggerシステムログを記録し、異なるレベル(info、warn、error、debug)のログ出力をサポートします。デバッグや監視に便利です。詳細は ログ を参照してください。
dbDatabaseORM層の操作、モデル登録、イベントリスニング、トランザクション制御など、データベース関連の機能を提供します。詳細は データベース を参照してください。
resourceManagerResourceManagerREST APIのリソースと操作ハンドラーの登録および管理に使用されます。詳細は リソース管理 を参照してください。
aclACLアクセス制御層で、権限、ロール、リソースアクセス戦略を定義し、きめ細やかな権限制御を実現します。詳細は 権限制御 を参照してください。
cacheManagerCacheManagerシステムレベルのキャッシュを管理し、Redis、メモリキャッシュなど様々なキャッシュバックエンドをサポートしてアプリケーションのパフォーマンスを向上させます。詳細は キャッシュ を参照してください。
cronJobManagerCronJobManager定期タスクの登録、開始、管理に使用され、Cron式の設定をサポートします。詳細は 定期タスク を参照してください。
i18nI18n国際化をサポートし、多言語翻訳とローカライズ機能を提供します。プラグインが多言語に対応しやすくなります。詳細は 国際化 を参照してください。
cliCLIコマンドラインインターフェースを管理し、カスタムコマンドの登録と実行、NocoBase CLI機能の拡張を行います。詳細は コマンドライン を参照してください。
dataSourceManagerDataSourceManager複数のデータソースインスタンスとその接続を管理し、多データソースシナリオをサポートします。詳細は データソース管理 を参照してください。
pmPluginManagerプラグインマネージャーで、プラグインの動的なロード、有効化、無効化、削除、およびプラグイン間の依存関係の管理に使用されます。

ヒント:各モジュールの詳細な使用方法については、対応するドキュメントの章を参照してください。