Core · フレームワーク

フレームワークの概要

この章では、アプリとプラグインが共有する仕組みと、主要な @nocobase/* パッケージの役割、使い方、実行時の境界を説明します。実装の流れは アプリ開発 または プラグイン開発 から始め、基盤の仕組みを知りたいときにここに戻ってきてください。

ランタイムと共通の仕組み

アプリは、クライアント、サーバー、CLI のランタイムを組み立てます。プラグインは公開の入口を通じて機能を提供します。どちらも同じサービスの取り決めを使い、登録する場所が異なります。

疑問読むページ
アプリはどう起動し、プラグインはどう参加するのかクライアントのランタイム、サーバーのランタイム、CLI ランタイム、プラグインの読み込み、起動とライフサイクル
業務サービスはどう登録、共有、解放されるのかサービスコンテナ、取り決めとトークン、ServiceProvider、クライアントとサーバーの組み込み
React のコンテキストはどうページのツリーに加わるのかReact の Provider
HTTP の API はどう宣言され、呼び出されるのかルートとリクエストのコンテキスト、ミドルウェア、検証とレスポンス、Repository の API、API Client

コンテナと依存性注入は両側に適用されます。ブラウザーとサーバーは、それぞれ別のコンテナ、インスタンス、ライフサイクルを持ちます。トークンの定義を共有しても、メモリ上のオブジェクトが両者で共有されるわけではありません。ランタイムをまたぐ呼び出しには、引き続き API を使います。

主要なパッケージ

メニューのトピックは機能ごとに分かれています。それぞれパッケージの仕組みと、ホストへの組み込みを説明します。この章で主に扱うのは次のパッケージです。

パッケージ役割読むページ
@nocobase/service-providerコンテナ、トークン、依存性注入、Provider のライフサイクルサービスコンテナ
@nocobase/db接続、モデル、照会、トランザクション、スキーマの進化データベース
@nocobase/caching名前空間付きのキャッシュ、カウンター、ブルームフィルターキャッシュ
@nocobase/driveファイルの操作とストレージのドライバーファイルストレージとドライバー
@nocobase/jobsバックグラウンドでの実行と定期的なスケジュールバックグラウンドジョブ、スケジュール
@nocobase/queueメッセージの生成、消費、配信の制御メッセージキュー
@nocobase/realtimeリアルタイムのトピック、公開、購読リアルタイム通信
@nocobase/logging構造化ログ、出力先、ローテーションログ
@nocobase/snowflake時刻、ワーカー、シーケンスに基づく IDID の生成

データベースには独自の章があります。接続とダイアレクト、モデリング、読み書き、リレーション、トランザクション、マイグレーションとシードです。アプリのファイルについては テーブルと初期データ を、プラグインのリソースの宣言については データベースのリソースとマイグレーション を参照してください。

アプリとプラグインでパッケージを使う

基本のパッケージが機能を定義し、アプリのランタイムが設定とインスタンスをホストに組み込みます。サーバーのサービスの多くは、公開のトークンで app.container から解決します。データベースのトークンは @nocobase/db から、キャッシュ、ストレージ、ジョブなどのホストのトークンは、対応する @nocobase/app-server/* の入口から取得します。

アプリとプラグインは、ホストのインスタンスを再利用すべきです。業務サービスはコンストラクターで依存関係を受け取り、Provider がそれを解決して組み立てられます。プラグインは自分が登録したエグゼキューター、購読、トピックを管理し、データベースの接続やキューのサービスなどの共有のインスタンスはホストが閉じます。リソースの所有者は各ガイドで説明しています。登録の場所については クライアントとサーバーの組み込み を参照してください。

単独のスクリプトやテストでは、独自のインスタンスを作成し、その設定、起動、後片付けを自分で担うことがあります。「単独」と書かれた例はそのライフサイクルを示すものです。リクエストごとに作成しないでください。

プラグインの機能との関係

ストレージのパッケージはディスクとファイルの操作を提供し、ファイルプラグインがレコード、アップロード、認可されたアクセスを加えます。Jobs は実行とスケジュールを提供し、定期タスクプラグインが管理ページと実行記録を加えます。Realtime は変更を届け、通知のプラグインは永続的な通知と個人の受信トレイを提供できます。

既存の機能を組み込むには プラグインを使う を読みます。より低レベルの動作を実装するには、この章を使います。公開の入口とパラメーターの索引は API リファレンス にあります。

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。