Dopo lunghi 3 mesi di dibattiti e ricerche nella scelta tra React (con Redux) e Angular 2, il team front-end della mia azienda ha concluso la collaborazione con Angular 2 (dato che è più adatto al nostro problema).
Ci occupiamo del business delle app aziendali, che al momento comprende molte tecnologie front-end (pur avendo l'intero backend RESTful) e volevamo sostituire tutto e disporre di una singola tecnologia per facilitare l'addestramento futuro e il controllo qualità .
Data la natura del nostro prodotto, è vasto e ci sono moduli all'interno, che sono di per sé un dominio diverso e possono essere realizzati come app standalone ma il prodotto stesso vive in un singolo URL.
Esempio;
Chiamiamo il mio prodotto come SuperApp.
Come interfaccia utente, SuperApp ha un sistema di accesso standard e la navigazione su moduli figlio / sotto-prodotti, in modo tale che il flusso di lavoro appaia come segue.
-
SuperApp
- Autentica utente
- Dimentica guidata password
- Pagina pubblica accessibile senza auth
-
Utente autenticato
-
Sistema di navigazione
- Inizio
- Sotto-prodotto1
- Sotto-product2
- Sotto-prodotto3
-
Profilo
...
...
-
Gruppi
...
...
- Inizio
-
Nota che nella rappresentazione sopra, Sub-product1
e Sub-product2
sono due aree completamente diverse, con domini aziendali completamente diversi.
Quello che posso pensare in questo momento è che posso creare SuperApp come un singolo progetto Angular 2 con solo componenti e viste rilevanti per se stesso, e SuperApp è anche responsabile del caricamento di più app per bambini; Sub-product1
, Sub-product2
(ancora, diversi progetti Angular 2, con il proprio package.json
, webpack
config, ecc.) tramite componenti stupidi, e agiscono come una shell che fornisce routing di primo livello e un segnaposto per tenere quelle app per bambini.
Una volta, Sub-product1
viene caricato all'interno della shell, aggiungerà i propri percorsi alla rotta corrente su cui è atterrato SuperApp.
Il motivo per cui voglio la separazione è perché queste diverse app (che sono attualmente costruite usando ExtJS) hanno team dedicati che lavorano su di essa (siamo un'azienda che ha più di 500 sviluppatori), quindi se hanno i loro progetti Angular, possono gestisci i loro strumenti e dipendenze a loro piacimento senza fare affidamento sull'app per i nonni.
Ma non sono in grado di trovare da nessuna parte nei documenti Angular ufficiali o sul Web che sia possibile avere app Angular nidificate (in modo tale che il codice framework sia condiviso mentre le dipendenze delle app figlio sono completamente isolate e caricate solo quando l'app ne ha bisogno) o se esiste un approccio alternativo per risolvere un problema del genere.
Saranno apprezzate eventuali indicazioni o collegamenti a qualsiasi articolo pertinente.