9

複数の独立した「サブアプリ」を持つポータル型アプリケーションを作成しようとしています。すべてのサブアプリが Angular で記述されていると仮定すると、次の目標を達成するための適切なパターンは何ですか。

  1. 各アプリは、互いに独立して開発および展開できます。
  2. それらは共通の認証サービスを共有し、共通のライブラリ (ディレクティブ、フィルターなど) を共有できます。
  3. 一度に表示されアクティブになるアプリは 1 つだけです。各サブアプリのスコープは互いに分離されています。
  4. ユーザーがサブアプリ間を移動すると、ユーザーがページを更新したり、別の静的リンクにアクセスしたりしない限り、状態が維持されます。(これはAngularに組み込まれており、特別な努力は必要ないと思います)
  5. 各サブアプリには複数のビューがあります (独自のメニューがあります)。利用可能なサブアプリに基づいてトップ メニューが表示されます。理想的には、展開されているサブアプリに基づいてトップ メニューが動的に構築されます。おそらく、これにはサーバー側のコンポーネントがあります (サーバーはフォルダー構造などを検出し、デプロイされているアプリを判断し、必要な js コードをページに挿入します)。

AngularJs にはマルチレベルのビュー構造がないため、異なる div で複数の ng-app 宣言を使用し、$window スコープを使用してアクティブなアプリのキーを保存し、アクティブでないアプリを非表示にすることを考えていました。

4

2 に答える 2

1

あなたの (むしろオープンな) 質問に対する簡単な答えはありませんが、$route と ngView の制限に関して、私はこれから派生した手法を採用して大きな成功を収めています: http://www.bennadel.com/blog/2420-Mapping -AngularJS-Routes-Onto-URL-Parameters-And-Client-Side-Events.htm

于 2012-12-08T18:51:17.137 に答える
0

これは私も実装しようと考えていたものです。私は完全に機能するソリューションを持っていませんが、このタイプのポータル アプリは、同じページ上の複数の角度のあるアプリで構成されていると思います。

ポータル アプリはメイン ページの従来の ng-app ディレクティブであり、「ポートレット」は動的に作成され、サブ ビュー div で角度アプリを手動でブートストラップします。これらの機能を提供するポータル サービス (独自のモジュールに含まれる) を、手動でブートストラップされたポートレット アプリに挿入することで、データ、状態、認証、パーソナライゼーションなどを共有できます。

難しい部分は、ポータル アプリがポートレット アプリを検出し、これらのアプリが独自の URL を使用して個別にデプロイされた Web アプリであることを認識して、Angular モジュールを提供する方法です。

サービス データがアプリ間で共通であるかどうか、またはポータル サービス (データ マネージャーなど) を介して HTML5 ローカル ストレージを試して活用する必要があるかどうかについて、まだいくつか質問があります。

于 2013-11-08T15:48:37.690 に答える