2012-12-08 14 views
8

複数の/独立した「サブアプリケーション」を含むポータルタイプのアプリケーションを作成しようとしています。すべてのサブアプリケーションがAngularで書かれていると仮定すると、以下の目標を達成するための良いパターンとなります。AngularJS(複数の独立アプリ)を使用したポータルタイプアプリケーション

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

AngularJsには複数レベルのビュー構造がありませんが、私は異なるdivで複数のng-app宣言を使用し、$ windowスコープを使用してアクティブなアプリケーションのキーを保存し、アクティブでないもの

答えて

0

これも私に何かあります実装しようと考えていた。私は完全な実用的な解決策はありませんが、このタイプのポータルアプリは、同じページに複数の角型アプリで構成されていると思います。

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

難しいのは、ポータルアプリケーションがポートレットアプリケーションを検出し、それらのアプリケーションが独自のURLを使って独立して配備されることを知っている角度モジュールにどのように役立つかです。

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

関連する問題