2012-12-08 6 views
8

Wir versuchen, eine Portalanwendung mit mehreren/unabhängigen "Sub-Apps" zu erstellen. Angenommen, dass alle Sub-Apps in Angular geschrieben sind, ist ein gutes Muster, um die folgenden Ziele zu erreichen.Portaltyp-Anwendung mit AngularJS (mehrere unabhängige Apps)

  1. Jede App kann unabhängig voneinander entwickelt und bereitgestellt werden.
  2. Sie teilen einen gemeinsamen Authentifizierungsdienst, sie können gemeinsame Bibliotheken (Direktiven, Filter usw.) gemeinsam nutzen.
  3. Nur eine App ist zu jeder Zeit sichtbar und aktiv. Der Umfang jeder Sub-App ist voneinander isoliert.
  4. Wenn die Benutzer zwischen den Unteranwendungen wechseln, wird der Status beibehalten, solange der Benutzer die Seite nicht aktualisiert oder eine andere statische Verbindung besucht. (Ich denke, dass dies in Angular eingebaut ist und keine besonderen Anstrengungen erforderlich sind)
  5. Jede Sub-App wird mehr als eine Sichten haben (es wird ein eigenes Menü haben). Es wird ein Top-Menü geben, basierend darauf, welche Sub-Apps verfügbar sind. Im Idealfall wird das oberste Menü basierend auf den bereitgestellten Sub-Apps dynamisch erstellt. Vielleicht gibt es eine serverseitige Komponente (der Server erkennt die Ordnerstruktur usw. und bestimmt, welche Apps bereitgestellt werden und injiziert den notwendigen js-Code in die Seite).

Angesichts der Tatsache, dass AngularJS nicht Multi-Level-Ansicht Struktur hat, dachte ich an mehrere ng-App-Erklärungen auf verschiedene divs und anschließend $ Fenster Umfang mit dem Schlüssel des aktiven App zu speichern und verstecken die diejenigen, die nicht aktiv sind.

Antwort

0

Dies ist etwas, das ich auch Ich habe versucht zu implementieren. Obwohl ich keine vollständige funktionierende Lösung habe, glaube ich, dass diese Art von Portal-App aus mehreren winkelförmigen Apps auf derselben Seite bestehen würde.

Die Portal-App wäre die traditionelle ng-app-Direktive auf der Hauptseite und die "Portlets" würden dynamisch erstellt werden und eckige Apps in einer Sub-View-div manuell hochladen. Sie können Daten, Status, Authentifizierung, Personalisierung usw. durch das Injizieren der Portaldienste (die in ihrem eigenen Modul enthalten sind), die diese Funktionen in den manuell zu startenden Portlet-Apps bereitstellen, nutzen.

Der schwierige Teil ist, wie die Portal-App die Portlet-Apps entdecken und ihre eckigen Module mit der Gewissheit bereitstellen würde, dass diese Apps unabhängig bereitgestellte Web-Apps mit ihren eigenen URLs wären.

Ich habe immer noch Fragen, ob die Servicedaten zwischen den Apps übereinstimmen oder ob Sie versuchen müssen, den lokalen HTML5-Speicher über den Portalservice (wie einen Datenmanager) zu nutzen.

Verwandte Themen