Grails (REST-API、AngularJS の一部、MongoDB、Tomcat、Spock、いくつかのプラグイン) から Node.js + Angular.js への移行に関する (ソフトウェア) アーキテクチャに関する質問がいくつかあります。おそらく、Grails プロジェクトの最初の構造について説明する必要があるので、ここで説明します。
いくつかのプラグインで構築されたメインの Grails アプリケーション (いくつかの他のアプリケーションに加えて) があります。これらのプラグインはそれぞれ単独で実行できます。つまり、独自の UI、個別のテンプレート、サービス、コントローラー、ルート、テストなどがあります。また、さまざまなリポジトリでホストされています。これは、Grails プラグインのメカニズムによって行われます。利点は、テストの労力が少なくて済むこと、コンパイル時間の短縮、モジュール化、単一の責任などです。
それでも、コンパイルとテストにかかる時間は非常に高くつきます。また、API がテンプレート/ビューの一部を提供するという事実も好きではありません。バックエンド API を「バックエンド API にするだけ」、フロントエンドを「フロントエンドにするだけ」にしたいと考えています。したがって、各 AngularJS アプリケーション/プラグインは独自のビュー、ルート、サービスなどを提供します。ただし、他のプラグインに依存する場合もあります。
だから私が達成したいのは次のとおりです:
- いくつかのプラグインを含む 1 つの主要な AngularJS アプリケーション (プラグインは、レポート ジェネレーター、ゲストブックなどのようなものであり、アプリケーションの単一の独立した部分について言えば、特定のルートまたはページのごく一部を使用します) )。
- 各プラグインは、スタンドアロンの AngularJS アプリケーションでなければなりません (おそらく、開発中に grunt などを介して実行可能です)。UI 開発者がバックエンド アプリケーション全体を起動する必要がないように、さらに JavaScript のみで機能テストを実行できるようにします。
- REST を介した通信のみ。フロントエンドは API からすべてのデータを取得する必要があります
- 各プラグインは単独でテスト可能でなければなりません
- プラグインが動作するために他のプラグインが必要になる場合があります
- メインの index.html (および app.js?) は、バックエンド (API) の残りの部分から切り離された Nginx サーバーによって提供される場合があります。
頭の中に具体的なイメージがありますが、このアーキテクチャをセットアップする方法に苦労しています。
Grails では、プラグイン メカニズムは、プラグインに依存する設定 (URL マッピング、依存関係など) を、それらが含まれる/注入されるメイン アプリケーションにマージします。これは、AngularJS でも達成したいことです。そう:
- AngularJS にも同じようなメカニズムはありますか?
- 各プラグインのルートをメイン アプリケーションに提供/マージするにはどうすればよいですか?
- アプリケーションとプラグインの依存関係を宣言するにはどうすればよいですか?
- ビルド プロセスに役立つツールは何ですか?
- プラグイン リソース (css/less ファイル、ビュー、サービスなど) の遅延取得を確立する方法は?
- アプリケーションが起動時にプラグインのすべてのリソースを提供するのを防ぎます (起動時にルートが必要だと思います)
これは単なるやり方の質問ではないので、重要な部分が欠けていたり、いくつかの部分が十分に明確でない場合は、申し訳ありません。質問していただければ、それぞれの質問に詳しくお答えします。