Nach langen 3-monatigen Debatten und Nachforschungen bei der Wahl zwischen React (mit Redux) und Angular 2 hat sich das Front-End-Team in meinem Unternehmen für Angular 2 entschieden (da es für unser Problem besser geeignet ist).
Wir beschäftigen uns mit Unternehmensanwendungen, die derzeit aus vielen verschiedenen Front-End-Technologien bestehen (während das gesamte Back-End REST-fähig ist), und wir wollten alles ersetzen und eine einzige Technologie haben, um die zukünftige Schulung und Qualitätskontrolle zu vereinfachen.
Angesichts der Beschaffenheit unseres Produkts ist es riesig und es gibt Module, die an sich eine andere Domäne darstellen und als eigenständige App erstellt werden können, das Produkt selbst jedoch unter einer einzigen URL gespeichert ist.
Beispiel;
Nennen wir mein Produkt SuperApp.
Als Benutzeroberfläche verfügt SuperApp über ein Standard-Anmeldesystem und die Navigation zu untergeordneten Modulen / Unterprodukten, sodass der Workflow wie folgt aussieht.
SuperApp
- Benutzer authentifizieren
- Passwort vergessen Assistent
- Öffentliche Seite ohne Authentifizierung zugänglich
Authentifizierter Nutzer
Navigationssystem
- Zuhause
- Unterprodukt1
- Unterprodukt2
- Unterprodukt3
Profil
...
...
Gruppen
...
...
- Zuhause
Beachten Sie, dass in oben Darstellung, Sub-product1
und Sub-product2
sind zwei völlig verschiedene Bereiche, ganz andere Geschäftsbereiche haben.
Momentan kann ich mir vorstellen, dass ich SuperApp als einzelnes Angular 2-Projekt mit nur für sich relevanten Komponenten und Ansichten erstellen kann. SuperApp ist auch für das Laden mehrerer untergeordneter Apps verantwortlich. Sub-product1
, Sub-product2
(wiederum verschiedene Angular 2-Projekte, die ihre eigene package.json
, webpack
Konfiguration usw. haben) über dumme Komponenten und fungieren als Shell, die Routing auf oberster Ebene und einen Platzhalter für diese untergeordneten Apps bereitstellt.
Sobald Sub-product1
es in die Shell geladen ist , hängt es seine eigenen Routen an die aktuelle Route an, auf der SuperApp gelandet ist.
Der Grund für die Trennung ist, dass diese verschiedenen Apps (die derzeit mit ExtJS erstellt werden) von dedizierten Teams bearbeitet werden (wir sind ein Unternehmen mit mehr als 500 Entwicklern). Wenn sie also über eigene Angular-Projekte verfügen, können sie ihre Tools verwalten und Abhängigkeiten nach Belieben, ohne sich auf die App der Großeltern zu verlassen.
In offiziellen Angular-Dokumenten oder im Web kann ich jedoch nirgendwo feststellen, ob es überhaupt möglich ist, geschachtelte Angular-Apps zu haben (so dass der Framework-Code gemeinsam genutzt wird und Abhängigkeiten von untergeordneten Apps nur dann vollständig isoliert und geladen werden, wenn die App vorhanden ist braucht es), oder ob es einen alternativen Ansatz gibt, um ein solches Problem zu lösen.
Jede Anleitung oder sogar Links zu relevanten Artikeln wird geschätzt.